You are on page 1of 2

#define _CRT_SECURE_NO_WARNINGS

#include<iostream>
#include<stdlib.h>
#include<windows.h>
using namespace std;
/*
* 主要集中在继承问题 以及 多态 以及多继承的二义性
1、多继承权限控制的问题
首先。实例化后成为对象的权限控制问题:除了 public 其他 protected 与 private 均无法访问
派生类内部的一个权限:public 与 protected 可以访问 而 private 不行
派生类实例化以后呢?除了 public 其他 protected 与 private 均无法访问

2、什么是继承?
作为面向对象的三大特征

3、继承的顺序?
继承顺序只与继承时候的先后顺序有关系 与构造初始化顺序无关
同理作为类成员实例化的对象与实例化先后顺序有关 与构造初始化顺序无关

4、派生类在实例化以后的构造顺序与析构顺序?
构造顺序:先基类,再变量,后自己
析构顺序与之相反:先自己,再变量,后基类
*/

class base1 //基类


{
public:
base1(int a = 10, int b = 20, int c = 30)
{
this->a = a;
this->b = b;
this->c = c;
cout << "base1 被调用,a=" << this->a << endl;
}
public:
int a;
protected:
int b;
private:
int c;
};

class base2:public base1 {


public:
base2(int aa=100)
{
this->aa = aa;
cout << "base2 被调用" << endl;
}
private:
int aa;
};
//base1 base2 base1 base1 base1 base2 derived
class derived : public base2,public base1 //派生类 C
{//先基类 再变量,后自己
public:
//派生类的内部
derived(int a = 101, int b = 102, int c = 103)
:bs1(1000)/*A*/, dra(a), drb(b), drc(c), base2(110), base1(11, 12, 13)/*B*/
{
cout << "derived 被调用" << endl;
}
private:
int dra;
int drb;
int drc;
base1 bs1;//实例化对象?
base1 bs2;
//答案选 CD

};

int main()
{
derived dr;
}

//只需要告诉我调用顺序

You might also like