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)
五、综合训练
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; }
相关文章推荐
- C++2远征之离港篇
- neuq oj 1058: 谭浩强C语言(第三版)习题7.3 矩阵 C++
- c++ 头文件保护符
- C++模板类重载"<<"未定义错误
- 兔子问题 素数 水仙花数 三个经典C程序的解答 C知识回顾第一天
- CPP操作符重载
- A a和A *a = new A()区别
- C++编译器之间的不同性能
- 数组指针和指针数组
- C++基础知识面试30题
- C++链表的创建与操作
- C++面向对象编程<九>:面向对象-类之间的关系
- C语言实现某年某月某日是某年的第几天
- C语言实现某年某月某日是某年的第几天
- C语言实现某年某月某日是某年的第几天
- YTU 2443: C++习题 复数类--重载运算符3+
- YTU 2442: C++习题 矩阵求和--重载运算符
- YTU 2441: C++习题 复数类--重载运算符2+
- C语言可变参实现参数累加返回
- C语言可变参实现参数累加返回