在C++中,POD是“Plain Old Data”的缩写,即“普通旧数据”。POD data是指一种特殊类型的数据结构,它们具有简单的内存布局,没有构造函数、虚函数、私有/保护的非静态数据成员,也没有虚继承等特性。这些数据结构可以直接通过内存拷贝进行复制,而无需进行特殊的初始化或析构。
对于POD类型,new A是默认初始化的,而new A()是值初始化的:
#include <iostream>
using namespace std;
int main() {
int *i1 = new int;
int *i2 = new int();
cout << *i1 << endl;
cout << *i2 << endl;
}
运行以上程序:
对于非POD的class类型,有两种情况,第一种情况是该类型没有用户定义的构造函数,此时new A会默认初始化类中成员,new A()会值初始化类中成员:
#include <iostream>
using namespace std;
class A {
public:
int i;
string s;
};
int main() {
A* obj1 = new A;
A* obj2 = new A();
cout << obj1->i << " " << obj1->s << "end" << endl;
cout << obj2->i << " " << obj2->s << "end" << endl;
}
运行以上程序:
如果该类型有用户自定义的构造函数,则new A和new A()都会默认初始化类中成员:文章来源:https://www.toymoban.com/news/detail-599645.html
#include <iostream>
using namespace std;
class A {
public:
A() {
cout << "in A's constructor" << endl;
}
int i;
string s;
};
int main() {
A* obj1 = new A;
A* obj2 = new A();
cout << obj1->i << " " << obj1->s << "end" << endl;
cout << obj2->i << " " << obj2->s << "end" << endl;
}
运行以上程序:
文章来源地址https://www.toymoban.com/news/detail-599645.html
到了这里,关于C/C++ new A与new A()的区别的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!