何时调用构造函数?

lit*_*tuk 18 c++ constructor

以下哪个是myClass的构造函数?

1.  myClass class1;
2.  myClass* class1;
3.  myClass* class1 = new myClass;
Run Code Online (Sandbox Code Playgroud)

非常感谢

tdo*_*bek 33

  1. 是 - 默认构造函数,在堆栈上创建的实例
  2. 没有
  3. 是 - 默认构造函数,在堆上创建的实例


Mar*_*ser 5

在#1和#3中,因为您实际上是在创建对象的实例.在#2中,您只是声明一个不指向实例的指针.


har*_*per 5

  1. 该语句将在堆栈上实例化一个对象,调用c'tor.
  2. 仅定义堆栈上的指针变量,不调用构造函数.
  3. new运算符将在free store(通常是堆)中创建一个对象并调用c'tor.

但是这段代码不会实例化任何对象,因为它不会编译.;-)尝试这个:

myClass class1; 
myClass* class2;
myClass* class3 = new myClass; 
Run Code Online (Sandbox Code Playgroud)
  • class 1是局部变量(在堆栈上),构造函数被调用.
  • class 2是一个指针,没有构造函数被调用.
  • class 3是一个指针,当执行new时,调用构造函数.