首页 > 代码库 > new对象时,类名后加括号与不加括号的区别

new对象时,类名后加括号与不加括号的区别

【1】默认构造函数

  关于默认构造函数,请参见随笔《类中函数》

  请看测试代码:

 1 #include <iostream> 2 using namespace std; 3  4 // 空类 5 class empty 6 { 7 }; 8  9 // 一个默认构造函数,一个自定义构造函数10 class Base11 {12 public:13     Base() 14     { 15         cout << " default Base construct " << endl;16         m_nValue = http://www.mamicode.com/100; 17     };18     Base(int nValue) 19     { 20         cout << " custom Base construct " << endl;21         m_nValue =http://www.mamicode.com/ nValue; 22     };23 24 private:25     int m_nValue;26 };27 28 // 一个默认复合构造函数29 class custom30 {31 public:32     custom(int value = http://www.mamicode.com/100)33     { 34         cout << " default && custom construct " << endl;35         m_nValue =http://www.mamicode.com/ value; 36     }37 38 private:39     int m_nValue;40 };41 42 void main()43 {44     empty* pEmpty1 = new empty;45     empty* pEmpty2 = new empty();46 47     Base* pBase1 =  new Base;48     Base* pBase2 = new Base();49     Base* pBase3 = new Base(200);50 51     custom* pCustom1 = new custom;52     custom* pCustom2 = new custom();53 54     delete pEmpty1;55     delete pEmpty2;56 57     delete pBase1;58     delete pBase2;59     delete pBase3;60 61     delete pCustom1;62     delete pCustom2;63 }64 // Result:65 /*66 default Base construct67 default Base construct68 custom Base construct69 default && custom construct70 default && custom construct71 */

  至此足以。

【2】加括号与不加的区别

  (1)加括号

    1. 若括号为空,即无实参项,那么理解为调用默认构造函数;

    2. 若括号非空,即有实参项,可以理解为调用重载构造函数,或默认复合构造函数。

  (2)不加括号

    调用默认构造函数,或默认复合构造函数。

 

 

Good  Good  Study,  Day  Day  Up.

顺序 选择  循环  总结

 

new对象时,类名后加括号与不加括号的区别