0
点赞
收藏
分享

微信扫一扫

坚持学习100天:多重继承以及多重继承构造/析构函数

互联网码农 2022-04-29 阅读 58
c++

前言

Hello,我是修齊。
学习C++的第一百零九天,用心学习。
在这里记录一些学习的东西和学习的心情,内容主要是一些自己学习整理的小笔记。

一、多重继承

1.声明的一般形式:


class<派生类名>:<派生方式1><基类名1>...<派生方式n><基类名n>
{
     派生类成员声明
}

二、代码

1.定义两个基类,并定义的派生类继承于两个基类

class base 1//定义基类base

public://定义基类成员
    int x;
    void print()//定义基类公有成员函数
    {
       cout<<"class base1:x="<<x<<endl;
    }
};
class base2//定义基类base2
{
public://定义基类成员
   int x;//定义派生类成员
   void print()//定义派生类成员函数
   {
       cout<<"class base2:x="<<x<<endl;
   }
};

2.类deried公有继承于类base1和类base2,是一个多重继承。

class derived:public base1,public base2//多重继承于base1和base2
{
public://定义派生类成员
    int x;
    void print()//定义派生类成员函数
    {
       cout<<"class derived:x="<<x<<endl;
    }
};
void main()
{
   deried ob;//创建对象
   ob.x=10;//调用派生类成员
   ob.print();
   ob.base1::x=20;//调用基类base1成员
   ob.base1::print();
   ob.base2::x=30;//调用基类base2成员
   ob.base2::print();
}main()主函数中创建了一个派生类的对象后,
通过该对象访问派生类中的成员与普通访问相同,
而访问基类中的成员,如出现二义性则需要使用作用域运算符来访问。

三、多重继承的构造函数和析构函数

1.多重继承构造函数的一般形式

<派生类名>::<派生类名>(参数总表)::基类名1(参数表1),..,基类名n(参数名n),
对象成员名1(对象成员参数表1),...,对象成员名m(对象成员参数m)
{
    //派生类新增成员的初始化语句
}

2.类derived公有继承于类base1、类base2和base3。

class derived::public base2,public base1,public base3//定义派生类
{
private:
    base1 ob1;//创建基类对象
    base2 ob2;
    base3 ob3;
public:
    derived(int x,int y,int z,int v):base1(x),base2(y),ob1(z),ob2(v)//派生类的构造函数
    {
       cout<<"constructing derived"<<endl;
    }
};
void main()
{
    derived ob(1,2,3,4);//创建派生类对象
}

1.派生类的构造函数为:输出“constructing derived"的信息。
2.主函数main()中创建派生类的对象ob时,先调用base2的构造函数,
再调用base1的构造函数,最后调用base3的构造函数。
3.声明派生类时,声明顺序为base2、base1、base3,
释放对象调用析构函数时,顺序正好与构造函数顺序相反。

四、小脑袋,大疑问

C++面向对象编程篇:
1.类和对象(构造、拷贝构造、析构、友元函数)
2.继承(继承与派生、派生类的构造和析构函数、多重继承、虚基类)
3.多态(多态、函数重载、虚函数、抽象类)
4.运算符重载(运算符重载的形式、特殊运算符的重载、类类型转换)
5.输入/输出流(输入/输出引入、标准输入/输出流、输入/输出流成员函数、输入/输出的格式控制、自定义数据类 型的输入/输出)

看了一点点,代码越来越长了,现在有几张知识点都没记住,看来下次得回来再看几遍,就越学越难的时候,抽身看看大纲是咋样的,了解后续了解自己的进程,沉淀内心的浮躁,再对后续保持一颗期待的心,加油

上述内容如有侵权,联系即删。
感谢阅读-感谢支持

举报

相关推荐

0 条评论