类中有其他构造函数的时候最好定义默认构造,或则利用default关键字将其变成合成默认构造。

class Phone
{
public:
    Phone(std::string name)
    {
        name_ = name;
    }
    std::string name_;
};

class Person
{
public:

    Person(std::string name,std::string ph)
    {
        cout << "这是一个有参构造" << endl;
    }
    ~Person()
    {

    }

    std::string name_;
    Phone ph_;//编译器会因为Phone没有默认构造而报错
};
 1 class Phone
 2 {
 3 public:
 4     Phone(std::string name)
 5     {
 6         name_ = name;
 7     }
 8     std::string name_;
 9 };
10 
11 class Person
12 {
13 public:
14   //此时编译器会因为初始化列表将Phone ph_;这个语句当成有参构造,而不报错
15     Person(std::string name,std::string ph):name_(name),ph_(ph)
16     {
17         cout << "这是一个有参构造" << endl;
18     }
19     ~Person()
20     {
21 
22     }

32     std::string name_;
33     Phone ph_;
34 };
posted on 2023-05-29 10:37  小凉拖  阅读(12)  评论(0编辑  收藏  举报