<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>
C++中的继承
最新推荐文章于 2024-07-04 14:48:12 发布