#include <iostream>
using namespace std;
class MyClass
{
public:
int getValue()
{
return _value;
}
private:
int _value;
};
new —默认初始化
int main(int argc, char **argv)
{
MyClass *a = new MyClass;
cout << "a = " << a->getValue() << endl;
return 0;
}
// output
// a = 17529952
new()—值初始化
int main(int argc, char **argv)
{
MyClass *b = new MyClass();
cout << "b = " << b->getValue() << endl;
return 0;
}
// output
// b = 0
区别:
- 在MyClass有用户定义的默认构造函数时,两者没有区别,都是调用默认构造函数进行初始化;
- 没有用户定义的默认构造函数时:
- 对于默认初始化(new),将类内部的有初始值的内置类型按照初始值进行初始化,没有初始值的内置类型不进行初始化;
- 对于值初始化(new()),将类内部的有初始值的内置类型按照初始值进行初始化,没有初始值的内置类型用0初始化。
- 非内置类型用默认初始化;