【发布时间】:2013-11-16 00:43:39
【问题描述】:
我做了一个单链表程序。
我想知道是否需要析构函数或默认析构函数可以正常工作?
class sll
{
node*head;
node*tail;
public:
sll()
{
head=tail=0;
}
sll(const sll & obj1);
void addtohead (int x);
void addtotail (int x);
int deletefromhead();
int deletefromtail();
}
【问题讨论】:
-
请不要写
= 0作为指针。写= NULL或者如果你有 C++11 写= nullptr; -
在类中使用指针时强烈建议使用析构函数。
-
@kfsone 我通常看到与 C++03 完全相反的建议,首选
=0。 -
是的。
std::cout << "sizeof(0) " << sizeof(0) << ", sizeof(NULL) " << sizeof(NULL) << ", sizeof(void*) " << sizeof(void*) << std::endl;。此外,当您遇到 0/NULL 解析为整数并调用与预期不同的指纹的情况时,需要更长的时间才能意识到作者打算传递空指针而不是 bool/int/whatever 它如果他们传递 '0' 而不是 'NULL',则被强制转换为。 -
void func(int); void func(char*); int test() { func(0); }vsvoid func(int); void func(char*); int test() { func(NULL); }(nullptr 就是为了解决这个问题而设计的,但这里我说的是可读性和可维护性)。
标签: c++ linked-list destructor