何时调用构造函数?

时间:2011-02-08 15:09:37

标签: c++ constructor

以下哪一项是myClass的构造函数?

1.  myClass class1;
2.  myClass* class1;
3.  myClass* class1 = new myClass;

非常感谢

5 个答案:

答案 0 :(得分:32)

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

答案 1 :(得分:5)

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

答案 2 :(得分:5)

  1. 该语句将在堆栈上实例化一个对象,调用c'tor。
  2. 仅定义堆栈上的指针变量,不调用构造函数。
  3. new运算符将在free store(通常是堆)中创建一个对象并调用c'tor。
  4. 但是这段代码不会实例化任何对象,因为它不能编译。 ;-)尝试这个:

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

答案 3 :(得分:1)

1和3,因为在它们中你创建了一个myClass对象。

答案 4 :(得分:1)

在实例化类时,在案例1和3中调用构造函数。另一个(2)只声明一个指针。