您的位置:首页 > 编程语言 > C语言/C++

C++学习笔记:继承

2016-02-23 21:57 363 查看
一、C++中的继承方式会影响子类的对外访问属性

public:修饰的成员变量 方法 在类的内部 类的外部都能使用

protected:修饰的成员变量方法,在类的内部使用,在继承的子类中可用

private:修饰的成员变量方法,只能在类的内部使用

二、private成员在子类中依然存在,但是却无法访问到。不论哪种方式继承基类,派生类都不能直接使用基类的私有成员。

三、C++中子类对外访问属性表:

父类成员访问级别

继 public protected private

承 public public protected private

方 protected protected protected private

式 private private private private

四、三看原则

C++中的继承方式会影响子类的对外访问属性,判断某一句话,能否被访问

1)看调用语句,这句话写在子类的内部还是外部

2)看子类如何从父类继承(public、private、protected)

3)看父类中的访问级别(public、private、protected)

五、综合训练

// 派生类访问控制综合训练.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <iostream>

using namespace std;

class A{
private:
int a;
protected:
int b;
public:
int c;
A(){
a = 0;
b = 0;
c = 0;
}
void set(int a, int b, int c){
this->a = a;
this->b = b;
this->c = c;
}
};

class B :public A{
public:
void print(){
//cout << "a = " << a;//err
cout << "b = " << b;//ok
cout << "c = " <<c<< endl;//ok
}
};
class C :protected A{
public:
void print(){
//cout << "a = " << a;//err
cout << "b = " << b;//ok
cout << "c = " << c << endl;//ok
}
};
class D :private A{
public:
void print(){
//cout << "a = " << a;//err
cout << "b = " << b;//ok
cout << "c = " << c << endl;//ok
}
};
int _tmain(int argc, _TCHAR* argv[])
{
A aa;
B bb;
C cc;
D dd;
aa.c = 100;//ok
bb.c = 100;//ok public
//cc.c = 100;//err protected 只能在子类的内部中使用
//dd.c = 100;//err private
aa.set(1,2,3);//ok
bb.set(1, 2, 3);//public ok
//cc.set(1, 2, 3);//protected err 只能在类的内部使用
//dd.set(1,2,3);
bb.print();//ok public
cc.print();//ok public
dd.print();//ok public
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: