码迷,mamicode.com
首页 > 编程语言 > 详细

【C++】C++自学进阶(6):继承(2)——继续进阶

时间:2016-04-15 00:14:22      阅读:225      评论:0      收藏:0      [点我收藏+]

标签:

  继承类不能继承基类的构造函数和析构函数,如果派生类需要的话,我们需要为派生类全新定义构造函数和析构函数。
一、单继承的构造函数

class Person
{
protected:
    char name[10];
    char sex;
public:
    //The Constructor of the base class
    Person(char name[],char sex):sex(sex)
    {
        cout<<"Base class constructor!"<<endl;
        strcpy(this->name,name);
    }
};
class Student::public Person
{
private:
    int number;
public:
    //Constructor of the derived class
    Student(int number,char name[],char sex):Person(name,sex)
    {
        cout<<"Derived class constructor!"<<endl;
        this->number = number;
    }
};

这个部分的干货:
  1. 继承类的构造函数只能初始化它自己新定义的数据,不能初始化从基类继承过来的东西,因此需要在定义继承类的构造函数时调用基类的构造函数,就像这样:

Student(int number,char name[],char sex):Person(name,sex){...}

  2. 定义派生类对象时,会首先运行派生类的构造函数,但是其构造函数会链接到基类的构造函数,所以实际上首先运行的是基类的构造函数。

  3. 如果继承类的构造函数中不写基类的构造函数,编译会出错,因为编译器会默认链接到默认基类构造函数,然而这个函数不存在。

  4. 执行顺序与写的顺序无关,总会先执行基类的构造函数。

【C++】C++自学进阶(6):继承(2)——继续进阶

标签:

原文地址:http://www.cnblogs.com/HappyCtest/p/5393635.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!