一.
当构造受委托的构造函数时,受委托的构造函数函数体会执行而委托构造函数函数体不会执行;
class Person { public: Person() { cout << "这是一个无参构造" << endl; } Person(const Person& p) { cout << "这是一个拷贝构造" << endl; } Person(int b):Person() { cout << "这是一个有参构造" << endl; } ~Person() { } int m_b; }; int main() { Person p; system("pause"); return 0; }
当构造委托的构造函数时,受委托的构造函数函数体会和委托构造函数函数体均会执行;
1 class Person 2 { 3 public: 4 Person() 5 { 6 cout << "这是一个无参构造" << endl; 7 } 8 9 Person(const Person& p) 10 { 11 cout << "这是一个拷贝构造" << endl; 12 } 13 Person(int b):Person() 14 { 15 m_b = b; 16 cout << "这是一个有参构造" << endl; 17 } 18 ~Person() 19 { 20 21 } 22 int m_b; 23 }; 24 25 26 int main() 27 { 28 Person p(10); 29 system("pause"); 30 return 0; 31 }
二.
拷贝构造不能和有参构造相互委托,因为两者的参数列表不相互匹配