问个构造函数的问题
在《C++ Primer》第三版第573页中有这么一段话:新用户常常会错误地认为如果不存在缺省构造函数则编译器会自动生成一个缺省构
造函数并将其应用在对象上以初始化类的数据成员对于我们定义的Account 类来说这
就不是真的系统既没有生成缺省构造函数也没有调用它对于含有类数据成员或继承来的
比较复杂的类这在部分上是对的可能会生成一个缺省构造函数但是它不会为内置或复
合型的数据成员如指针或数组提供初始值。
这段话的意思是说,如果一个类没有缺省构造函数的话,编译器不会自动为我们生成缺省构造函数。但是我在其它书上看到是说,如歌一个类没有缺省构造函数的话,编译器为我们自动生成缺省构造函数的。然后我写了段代码,如下:
class Data
{
};
void main()
{
Data *pData = new Data;
}
这段代码能成功执行,那这句“ Data *pData = new Data;”代码在执行的时候,编译器是不是为我们自动生成了缺省的构造函数?否则这句代码是不能执行的。如果是这样的话,《C++ Primer》第三版上的那段话正确吗?求证!!!
还有就是“Data *pData = new Data”和“Data *pData = new Data()”这两句代码是等价的吧。