C++学习笔记:继承

来源:互联网 发布:甲醛来源 知乎 编辑:程序博客网 时间:2024/06/05 05:07

一、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;//errcout << "b = " << b;//okcout << "c = " <<c<< endl;//ok}};class C :protected A{public:void print(){//cout << "a = " << a;//errcout << "b = " << b;//okcout << "c = " << c << endl;//ok}};class D :private A{public:void print(){//cout << "a = " << a;//errcout << "b = " << b;//okcout << "c = " << c << endl;//ok}};int _tmain(int argc, _TCHAR* argv[]){A aa;B bb;C cc;D dd;aa.c = 100;//okbb.c = 100;//ok public//cc.c = 100;//err protected 只能在子类的内部中使用//dd.c = 100;//err private aa.set(1,2,3);//okbb.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 publicdd.print();//ok publicreturn 0;}


0 0
原创粉丝点击