// 初始化列表与默认参数配合使用
class Person{
int m_age;
int m_height;
public:
// 默认参数只能写在函数的声明中
Person(int age = 0,int height = 0);
// 或者
Person(int age = 0,int height = 0):m_age(age),m_height(height){}
};
// 构造函数的初始化列表只能写在实现中
Person::Person(int age,int height):m_age(age),m_height(height){
}
int main() {
Person person1;
Person person2(18);
Person person3(20,180);
getchar();
return 0;
}
// 总结:
如果函数声明和实现是分离的,初始化列表只能写在函数的实现中,默认参数只能写在函数的声明中.
//父类的构造函数
子类的构造函数默认会调用父类的无参构造函数
如果子类的构造函数显示地调用了父类的有参构造函数,就不会再去默认调用父类的无参构造函数
如果父类缺少无参构造函数,子类的构造函数必须显式调用父类的有参构造函数
// 构造,析构顺序相反
struct Person {
Person() {
cout << "Person()" << endl;
}
~Person() {
cout << "Person()" << endl;
}
}
struct Student:Person {
Student() {
cout << "Student()" << endl;
}
~Student() {
cout << "~Student()" << endl;
}
}
// 调用顺序Person(),Student(),~Student(),~Person()
// 父类指针,子类指针
父类指针可以指向子类对象,是安全的,开发中经常用到(继承方式必须是public)
子类指针指向父类对象是不安全的.
C++,初始化列表与默认参数配合使用
最新推荐文章于 2024-03-04 22:01:54 发布