解析C++中构造函数的默认参数和构造函数的重载攻略
构造函数的默认参数
在 C++ 中,可以给函数的形参设置默认参数。这个特性也适用于构造函数。在类定义中,可以为某个构造函数的参数提供默认值,这样在使用该构造函数时,可以不传递对应参数,直接使用默认值。
下面展示一个使用默认参数的构造函数示例:
class Person {
public:
Person(int age = 18, string name = "Tom"): m_age(age), m_name(name) {}
private:
int m_age;
string m_name;
};
在这个例子中,Person 类定义了一个带有默认值的构造函数。当用户不传递 age 或者 name 参数时,就会使用默认值 18 和 "Tom"。
在使用 Person 类时,可以使用如下构造函数:
Person person; //使用默认参数18和"Tom"构造一个Person对象
Person person2(20); //设置age参数为20,name参数为"default"
Person person3(25, "John"); //设置age参数为25,name参数为"John"
构造函数的重载
和其他函数一样,构造函数也可以被重载。在同一类中,可以定义多个构造函数,这样就可以使用不同的参数组合来初始化对象。
对于一个重载的类构造函数,有以下两个特点:
- 名字相同
- 参数个数或者类型不同
下面是一个演示使用构造函数重载实现不同初始化方式的示例:
class Person {
public:
Person(int age, string name) : m_age(age), m_name(name) {}
Person(int age) : Person(age, "default") {} //这里调用上面那个构造函数
private:
int m_age;
string m_name;
};
在以上示例中,Person 类拥有两个构造函数。第一个是直接传递 name 和 age 两个构造参数,第二个是仅传递 age 参数,表示使用默认的 name 值 "default"。
使用重载的构造函数时,我们可以像这样初始化 Person 对象:
Person person(18, "Tom");
Person person2(20);
当使用第二个构造函数时没有传递 name 参数,将会使用默认的值 "default"。因此,person2 对象的 name 值就是 "default"。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:解析C++中构造函数的默认参数和构造函数的重载 - Python技术站