为何派生类要设置默认成员而非自定义?

2026-04-12 04:591阅读0评论SEO资讯
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计379个文字,预计阅读时间需要2分钟。

为何派生类要设置默认成员而非自定义?

派生类的默认成员+在前端类和对象中,我们学习了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; }

当我们在子类中不做任何定义的时候,会调用父类的构造函数和析构函数,上述代码打印结果如下:

我们发现子类不做定义,子类会自动的调用父类的成员(构造函数和析构函数)。

标签:默认成员

本文共计379个文字,预计阅读时间需要2分钟。

为何派生类要设置默认成员而非自定义?

派生类的默认成员+在前端类和对象中,我们学习了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; }

当我们在子类中不做任何定义的时候,会调用父类的构造函数和析构函数,上述代码打印结果如下:

我们发现子类不做定义,子类会自动的调用父类的成员(构造函数和析构函数)。

标签:默认成员