派生类的默认成员 在前面类和对象那一节我们学习了6个默认成员函数: 我们知道即使我们不写,编译器也会自动生成。我们也来学习一下派生类的默认成员函数。 在下面的代码中Pe
派生类的默认成员
在前面类和对象那一节我们学习了6个默认成员函数:
我们知道即使我们不写,编译器也会自动生成。我们也来学习一下派生类的默认成员函数。
在下面的代码中Person是基类,Student是Person的派生类:
class Person
{
public:
//构造函数
Person(const char* name = "张三")
: _name(name)
{
cout << "Person()" << endl;
}
//拷贝构造函数
Person(const Person& p)
: _name(p._name)
{
cout << "Person(const Person& p)" << endl;
}
//赋值重载函数
Person& operator=(const Person& p)
{
cout << "Person operator=(const Person& p)" << endl;
if (this != &p)
_name = p._name;
return *this;
}
//析构函数
~Person()
{
cout << "~Person()" << endl;
}
protected:
string _name; // 姓名
};
class Student : public Person
{
protected:
int _num;//学号
};
int main()
{
Student s;
return 0;
}
当我们在子类中不做任何定义的时候,会调用父类的构造函数和析构函数,上述代码打印结果如下:
我们发现子类不做定义,子类会自动的调用父类的成员(构造函数和析构函数)。