构造函数调用几次

原文地址:

http://zhidao.baidu.com/question/361788173.html&__bd_tkn__=6bba5b0d2c2c951d541ae36eb9b82ff4c71381ad8078338d51fed8133ea5c69d362ad36bb4bcda3b39bb3949f6bbe47087ac3af56e60b1f4e7eb60157b5afc35956fa8ff5d0f03de01252708a033be7f4d77ee7f085fc8fbd74d3e7a772d445dc8677f364ec0deaf9d0dfaaccbdc8c0acc332bf44fac

c++定义类的对象MyClass a,b[2],*c,**d,*e[2],*f=new char A,*g=new char B[2]分别调用几次构造函数?为什么?

MyClass a:定义一个对象,调用1次构造函数。
b[2]:定义含有两个元素的数组,实际上定义两个对象,所以调用2次构造函数。
*c:定义指向类对象的指针,但没有进行实际的内存分配,所以不调用构造函数。
**d:定义指向类对象指针的指针,但没有进行实际的内存分配,所以不调用构造函数。
*e[2]:定义含有两个指向类对象的指针的数组,但没有进行实际的内存分配,所以不调用构造函数。
*f=new char A:这个语句有问题,f是指向MyClass的对象,你却让它指向char类型的变量。应该改成:*f=new MyClass,涉及到内存的分配,调用1次构造函数。
*g=new MyClass [2],涉及到内存的分配,调用2次构造函数。
总结:只有涉及到内存分配的时候,才会调用构造函数。普通对象调用一次,对象数组调用N次(该数组含有N个元素)。只定义指针而不给指针赋值,则不涉及内存分配,不调用构造函数。

你可能感兴趣的:(MFC)