C++语法学习笔记二十二:继承的构造函数-多重继承-虚继承

实例代码:


#include <iostream>
#include <string>
#include <vector>

using namespace std;

class A{
public:
	A(int i, int j, int k = 5){
	}
	A(){}
};

class Grand {
public:
	Grand(int i) :m_valuegrand(i){

	}
	virtual ~Grand(){

	}
	void myinfo(){
		cout << m_valuegrand << endl;
	}

public:
	int m_valuegrand;
};

class G : public Grand{ //继承自爷爷类

public:
	G(int i) : Grand(i), m_valuea(i){  //每个子类的构造函数,负责解决自己父类的初始化问题。

	}
	virtual ~G(){

	}

	void myinfo(){
		cout << m_valuea << endl;
	}
public:
	int m_valuea;
};


class B : public A{
public:
	B(int i, int j, int k) : A(i, j, k){}

	using A::A; //继承A的构造函数。 using :就让某个名字在当前作用域内可见。
				//遇到这条代码的时候,会把基类的每个构造函数,都生成一个与之对应的派生类构造函数。
				//B(析构函数形参列表 ... ): A(照抄的构造函数形参列表){} : 函数为空
					//B(int i, int j, int k):A(i, j, k){}
	//如果基类A的构造函数有默认参数的话, 那么编译器遇到这种using A::A的时候,就会帮咱们在派生类B中构造出多个构造函数来。
	//a) 第一个构造函数是带有所有参数的构造函数
	//b) 其余的构造函数,每个分别省略掉 一个默认参数。
	//B(int i, int j, int k):A(i, j, k){}
	//B(int i, int j):A(i, j){}

	//如果类B,只含有using A::A从A类继承来的构造函数的话,那么编译器是会给它合成默认的构造函数的。
};


int main() {
	 //没什么知识点,都很简单

	system("pause");
	return 0;
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值