浅谈C++继承方式
来源:互联网 发布:js正则判断正整数 编辑:程序博客网 时间:2024/06/05 03:30
简单地说下C++类的3种继承方式,分别是public继承,protected继承,private继承。
最常用的还是public继承。class默认的是private继承,它的member如果没写权限也是默认
private。struct则相反,默认的是public继承。结合下面的图示和代码,对C++的继承就有了
比较清晰的认识了。
继承之后,derived class 继承过后的member的属性就是图中所示。
代码主要从:
1.基类成员对其对象的可见性:
2. 基类成员对派生类的可见性:
3. 基类成员对派生类对象的可见性:
这3个方面谈的。
- #include <iostream>
- class base{
- public:
- base(){
- a = 0;
- b = 1;
- c = 2;
- }
- int a;
- protected:
- int b;
- private:
- int c;
- };
- class derived1 : public base{//public继承
- public:
- void fun(){//derived class可以访问public和protected member
- std::cout<<base::a<<base::b<<std::endl;
- // std::cout<<base::c;//不能访问
- }
- };
- class derived2 : protected base{//protected继承
- public:
- void fun(){//derived class可以访问public和protected member
- std::cout<<base::a<<base::b<<std::endl;
- // std::cout<<base::c;//不能访问
- }
- };
- class derived3 : private base{//private继承
- public:
- void fun(){//derived class可以访问public和protected member
- std::cout<<base::a<<base::b<<std::endl;
- // std::cout<<base::c;//不能访问
- }
- };
- class derived4 : public derived3{//base的member不能被private继承的派生类的子类访问
- public:
- void fun(){
- // std::cout<<a;
- }
- };
- class derived5 : base{//默认private继承
- void fun(){//derived class可以访问public和protected member
- std::cout<<base::a<<base::b;
- // std::cout<<base::c;//不能访问
- }
- };
- int main(void)
- {
- base b1;
- derived1 d1;
- derived2 d2;
- derived3 d3;
- d1.fun();
- d2.fun();
- d3.fun();
- std::cout<<b1.a;//base class Object只能访问public member
- std::cout<<d1.a;//public继承时 derived class Object只能访问base class的public member
- //std::cout<<d1.b<<d1.c;//不能访问
- //std::cout<<d2.a<<d2.b;//protected继承时 derived class Object不能问访base class的member
- //std::cout<<d3.a;//private继承时 derived class Object不能问访base class的member
- return 0;
- }
转载地址:http://blog.csdn.net/complety/article/details/7493194
阅读全文
0 0
- 浅谈C++继承方式
- 浅谈C++继承方式
- 浅谈C++继承方式
- C++(继承语法&&继承方式)
- 浅谈Objective-C中的继承
- 【C++】浅谈C++中的继承
- C++(笔记)浅谈什么是继承机制
- NSProxy浅谈--- Objective-c 伪多继承
- 浅谈JavaScript原型链继承方式与闭包
- 浅谈继承
- 浅谈继承
- C/C++继承方式--形象化表述
- C++/3种继承方式测试
- C++——三种继承方式
- C++-继承的概念与方式
- public、protect、private继承方式 C++(转)
- 【C++】:C++中的继承权限和继承方式
- 哈希表的应用浅谈1[转] + 派生类的3种继承方式 + C++虚拟继承
- hadoop搭建以及问题
- 原子哥家的 SIM800L透传模式配置
- Java设计模式之十一:状态模式
- mysql数据表之间求余集
- weex(1):weexpack 的使用
- 浅谈C++继承方式
- (线段树+dfs序)
- 字符串+尺取法
- 侧栏滑动
- python 爬虫实战
- 【PythonDjango后台实例 第三章】Python3.6.1+Django1.8 模版的继承使用
- 引用类型---Date
- The method newJob(Class<QuartzTest>) is undefined for the type Test
- Java设计模式之十二:策略模式