首页 > 编程语言 > 详细

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

时间:2016-04-15 00:12:13      阅读:201      评论: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
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!