我有以下代码:
#include <iostream>
using namespace std;
class Foo {
int data;
public:
Foo(int d = 0) {
data = d;
}
~Foo() {
cout << data;
}
};
int main() {
Foo a;
a = 20;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这段代码的输出是2020。我想会发生什么,创建了一个临时对象a。一旦使用赋值运算符将值赋值为 20,就会调用析构函数并打印 20。然后 main 函数到达 return 并再次调用析构函数,再次打印 20。
我对吗?
假设我有一个指针,我希望将其初始化为 nullptr。哪个选项更好,创建一个将该成员变量设置为 nullptr 的构造函数,或者只是在头文件的声明中将其初始化为 nullptr。
有什么区别吗?后者被认为是不好的做法吗?
提前致谢。