这两种方法有什么区别?
Method(CustomClass t)
{
CustomClass *temp = &t;
}
像这样称呼
Method(CustomClass(1,2,3));
和
Method(CustomClass* t)
{
CustomClass *temp = t;
}
像这样称呼
Method(new CustomClass(1,2,3));
我已经好几年没有用 C++ 编写代码了,而且记起来有些困难。我来自 c#,每个类都需要动态分配“新”。问题是我不理解使用“new”动态分配对象和正常调用它之间的区别。两个示例中的 temp 有何不同?
更具体的例子:我正在创建一个链接列表,对于我的列表我有这个方法:
void List::AddNew(TestClass node)
{
if (!first)
{
first = &node;
}
else
{
bool setFirst = false;
if (!last)
setFirst = true;
TestClass *temp;
temp = last;
last = &node;
if (temp)
temp->next = last;
if (setFirst)
first->next = last;
}
}
在哪里first
和last
在哪里TestClass *
;列表未正确初始化(第一个和最后一个指向相同的值),我不知道为什么,所以我将方法更改为:
void List::AddNew(TestClass* node)
{
if (!first)
{
first = node;
}
else
{
bool setFirst = false;
if (!last)
setFirst = true;
TestClass *temp;
temp = last;
last = node;
if (temp)
temp->next = last;
if (setFirst)
first->next = last;
}
}
现在它可以工作了。我错过了指针的基本原则,我似乎无法猜测它是。
这里也是TestClass:
class TestClass
{
public:
int x, y;
TestClass *next;
TestClass *prev;
TestClass();
TestClass(int,int);
~TestClass();
};