C++中的继承

<span style="font-size:14px;">#include<iostream>
using namespace std;

/**
继承:通过继承已有类,来建立新类。继承关系有protected,private,public .这些继承关系的修饰,是为了
保证数据访问的安全性。但是感觉搞那么麻烦没什么用 。自己做到安全访问就行了、而且现在有编译器进行语法错误
判断,现在还是简单说下.根据编译器语法提示得出下面几条结论;实际使用的时候我们都是直接使用public继承
*/

//基类A;  1.一个类的实例对象(生成)只可以访问它的public修饰的成员方法和成员变量;但是一个类中定义的成员方法可以自由
			//访问该类中的所有方法和变量。
class A{
public:
	int i_a;
	void f1_a(){
		this->k_a = 3;
	}

protected: 
	void f2_a();
	int j_a;

private :
	int k_a;
	void f0_a();
};


//类B公有继承A   2.如果一个类是公有继承它的基类,那么在该类中它的成员方法可以访问除了1中所说的外,还可以访问
		//它的基类中由public或者protected修饰的方法和变量。该类生成的实例对象只可以访问它的基类中由public修饰的成员方法和变量
class B :public A{
public:
	int i_b;
	void f3_b(){
		f1_a();
		f2_a();
	}

protected:
	int j_b;
	void f4_b();

private:
	int m_b;
	void f5_b();
};

//类C保护继承B     如果一个类保护继承一个基类,那么该类中的成员方法可以可以访问它的基类中由public或者protected修饰的
	//成员方法和变量。该类生成的实例对象,只可以访问它的基类中由public修饰成员方法和变量
class C :protected B{
public:
	int i_c;
	void f5_c(){
		
	}

protected:
	int j_c;
	void f4_c();

private:
	int n_c;
	void f6_c();
};



A a;
B b;
C c;
int main(){
	//下面是访问控制
	//对象a可以访问的地方
	a.f1_a();
	a.i_a;
	return 0;
}

/**
派生类的构造函数,这里与java不同,C++中除了调用自己的构造函数外,还要自己手动调用
其基类的构造函数、
*/

class Student{
protected:
	int num;
	string name;
	char sex;

public:
	Student(int n,string nam,char s){
		num = n;
		name = nam; 
		sex = s;
	}

	~Student(){
	
	}
};

class Student1 :public Student{
private :
	int age;
	string addr; 

public :
	//构造函数,调用基类的构造函数
	Student1(int n, string nam, char s,int a, string ad) :Student(n, nam, s){
		age = a;
		addr = ad; 
	}
};

/*
C++中允许类多重继承,但是不提倡在实际中使用多重继承,
鉴于此,在java中就规定只能使用单继承
class D:public A,private B,protected C{
}
*/

/*
C++中多重继承会导致派生类中可能会有多重复数据和方法,导致二义性
C++为我们在继承的时候,添加virtual
class D: virtual public A{
}
*/</span>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值