一.

当构造受委托的构造函数时,受委托的构造函数函数体会执行而委托构造函数函数体不会执行;

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 }

二.

拷贝构造不能和有参构造相互委托,因为两者的参数列表不相互匹配

 

posted on 2023-05-28 21:29  小凉拖  阅读(24)  评论(0编辑  收藏  举报