- 浏览: 447395 次
- 性别:
- 来自: 济南
文章分类
- 全部博客 (470)
- 前言 (1)
- 【sys】centos6.2 (51)
- 【sys】shell (8)
- 【sys】yum (1)
- software (6)
- 【tec】ruby (16)
- 【tec】rails (35)
- 【tec】rails路由 (2)
- 【tec】rails部署 (10)
- 【tec】rails优化 (6)
- 【tec】rails测试 (11)
- 【tec】php (45)
- 【tec】android (1)
- 【tec】ios (125)
- 【data】mysql (11)
- web (6)
- 【life】文学与提升 (2)
- life (36)
- 【life】怀念 (1)
- 【web】nginx (5)
- 【web】网络与安全 (4)
- 工作随笔 (1)
- 【software】svn (5)
- 【script】jquery (10)
- powerEdge (2)
- 杂七杂八 (5)
- 【sys】ubuntu (9)
- 【sys】windows (4)
- 【tec】java (1)
- 【tec】html (3)
- 【tec】c++ (38)
- 【tec】汇编 (1)
- 【data】数据库 (1)
- 【exchange 】学术交流 (1)
- 【tec】域名空间 (1)
- 【tec】编程先知 (1)
- 【tec】网站建设 (7)
- 【sys】mac (24)
- 【sys】seo (1)
- 【tec】wp (1)
- 【software】git (4)
最新评论
-
fireDragonpzy:
呵呵 貌似我网站上的有更新 你从那里看看 这个博客维护的不及时 ...
牛人经典语录 -
Peppermintchz:
还真这么2过啊!!好怀念啊
牛人经典语录 -
fireDragonpzy:
chenhong53 写道你好,我想问一下,能不能给一组精灵数 ...
cocos2d-x事件触发的优先级 -
chenhong53:
你好,我想问一下,能不能给一组精灵数组中的精灵添加触屏优先级, ...
cocos2d-x事件触发的优先级 -
fireDragonpzy:
dreamstar1020 写道谢谢庞兄指点,写的很详细,谢谢 ...
致:上海郑兄(虚拟主机-web服务器搭建)
在C++中继承主要有三种关系:public、protected和private。这三种继承关系中public 继承是最为常用的一种继承关系,代表了接口继承含义,而他们分别具体代表了什么含义呢? 1. public 从语义角度上来说,public继承是一种接口继承,根据面向对象中的关系而言就是,子类 可以代替父类完成父类接口所声明的行为,也就是必须符合“Liskov替换原则(LSP)”, 此时子类可以自动转换成为父类的接口,完成接口转换。 从语法角度上来说,public继承会保留父类中成员(包括函数和变量等)的可见性不变, 也就是说,如果父类中的某个函数是public的,那么在被子类继承后仍然是public的。 2. protected 从语义角度上来说,protected继承是一种实现继承,根据面向对象中的关系而言就是, 子类不能代替父类完成父类接口所声明的行为,也就是不符合“Liskov替换原则(LSP)”, 此时子类不能自动转换成为父类的接口,就算通过类型转换(static_cast和dynamic_cast) 也会得到一个空指针。 从语法角度上来说,protected继承会将父类中的public可见性的成员修改成为protected 可见性,相当于在子类中引入了protected成员,这样一来在子类中同样还是可以调用父 类的protected和public成员,子类的子类就也可以调用被protected继承的父类的protected 和public成员。 例如: class CSample1 { protected: void printProtected() {} public: void printPublic() {} }; class CSample2 : protected CSample1 { }; class CSample3 : public CSample2 { void print3() { printProtected(); printPublic(); } }; 3. private 从语义角度上来说,private继承是一种实现继承,根据面向对象中的关系而言就是, 子类不能代替父类完成父类接口所声明的行为,也就是不符合“Liskov替换原则(LSP)”, 此时子类不能自动转换成为父类的接口,就算通过类型转换(static_cast和dynamic_cast) 也会得到一个空指针。 从语法角度上来说,private继承会将父类中的public和protected可见性的成员修改成为 private可见性,这样一来虽然子类中同样还是可以调用父类的protected和public成员, 但是在子类的子类就不可以再调用被private继承的父类的成员了。 class CSample1 { protected: void printProtected() {} public: void printPublic() {} }; class CSample2 : private CSample1 { }; class CSample3 : public CSample2 { void print3() { printProtected(); // 编译错误,不可以调用该函数 printPublic(); // 编译错误,不可以调用该函数 } }; 在面向对象的理论中有两种概念:接口、实现,所以就出现了所谓的接口继承和实现继 承两种关系。而protected和private就是实现继承中所要用到的,其实protected和private 两者则约束继承时并没有形成两种不同的继承类别,而仅仅只是为了方便C++类方法的传递 调用而设计的,其实在java这样面向对象要求更为严格的语言当中,没有实现继承,他必须 通过委托方式来完成这一概念,如果熟悉java就会明白,如果一个对象要使用另外一个对象 的接口功能,而自身又不能够充当该对象所扮演的角色时,就会通过委托来完成,这样一来 就必须在对象中包含一个委托对象,通过对象调用语法来完成功能;在C++中就可以通过 protected和private继承来完成java中的委托关系(当然C++也可以形成对象委托关系), 那么这种情况下protected继承就容许委托可以传递(也就是被多级子类调用),而private 继承是不容许委托被传递的。
摘自:http://www.cppblog.com/chemz/archive/2007/05/31/25189.aspx
发表评论
-
C++ 虚函数表解析 转
2013-05-29 09:09 783详情请参考:【Software Myzone】:http:// ... -
不玩设计模式的程序员不是好程序员
2013-05-02 09:40 639详情请参考:【Software Myzone】:http:// ... -
C/C++中的结构体
2012-11-07 09:02 719详情请参考:【Software Myzone】:http:// ... -
C++数组的存储|C++数组所占内存空间
2012-09-17 19:45 722详情请参考:【Software Myzone】:http:// ... -
C++中引用传递与指针传递区别(进一步整理)
2012-09-04 13:37 802详情请参考:【Software MyZone】:http:// ... -
提高C程序效率的方法
2012-08-14 18:21 433本文为firedragonpzy原创,转载务必在明显处注明: ... -
const char*, char const*, char*const的区别
2012-08-13 13:50 846const char*, char const*, char* ... -
“tr”和字符串类型的string str = "tr"对比
2012-08-11 16:11 921本文为firedragonpzy原创,转载务必在明显处注明: ... -
c++ sizeof使用
2012-08-11 15:22 831http://dev.yesky.com/143/256364 ... -
typedef分析(针对ccColor4B)
2012-08-09 19:34 1223本文为firedragonpzy原创, ... -
c++中的变量
2012-08-09 17:24 750本文为firedragonpzy原创, ... -
C++引用与指针的比较
2012-08-03 14:09 743引用是C++中的概念,初学者容易把引用和指针混淆一起。 ... -
C/C++中函数指针的含义
2012-08-01 15:54 941函数存放在内存的代 ... -
vs2010惯用快捷键设置
2012-07-27 19:54 959首先介绍下快捷键设置入口:工具->选项->环境 ... -
几种函数调用方式
2012-07-27 15:33 946几种函数调用方式 __cdecl 是C De ... -
c++基础知识(十一)文件的复制
2012-07-25 08:49 735#include <cstdio> #inc ... -
字符编码笔记:ASCII,Unicode和UTF-8
2012-07-18 14:04 9641. ASCII码 我们知道,在 ... -
c++基础知识(十)学习C++静态成员注意事宜
2012-07-14 17:49 853C++中的一个类中还可以 ... -
c++ site
2012-07-14 09:45 731c++,含有内核的讲解:http://bdxnote.blog ... -
c++进阶(一)C语言条件编译及编译预处理阶段
2012-07-14 09:09 1346一、C语言由源代码生成的各阶段如下: C源程序->编译 ...
相关推荐
C++面向对象基础知识总结
c++相关基础知识,继承、封装、多态等
C++基础知识思维导图,包括面向对象语言的三大特性:封装,继承和多态
计算机C++基础题库 计算机C++基础题库是指对C++编程语言的基本概念、语法、特性和应用的总结和归纳。...本题库涵盖了计算机C++基础知识的多个方面,旨在帮助读者快速掌握C++编程语言的基本概念和应用。
C++中类与继承的知识,给出一个哺乳动物类,要求从此派生出一个狗类狗属哺乳动物,且它的属性有品种之分(在哺乳类基础上增加品种数据成员),叫声区别于其他动物(即Speak()实现为虚函数,输出“Woof!”),还会摇...
(一)默认继承权限。如果不明确指定,来自class的继承按照private继承处理,来自struct的继承按照public继承处理; (二)成员的默认访问权限。class的成员默认是private权限,struct默认是public权限。 除了这两...
由浅入深学C++基础进阶与必做300题 源程序 解压后122M C++是近年广泛使用的程序设计语言,由C语言的基础上发展而来,实现 了由面向过程到面向对象的转变,全面支持面向对象的程序设计方法。C++ 语言在软件工业领域...
c++常用知识点总结,包含c++基础知识、c++内存、c++面向对象、c++stl、c++ 新特性、c++操作系统、c++计算机网络、c++数据库、c++设计模式。 C++在C语言基础上引入了面对对象的机制,同时也兼容C语言。 C++有三大特性...
.doc格式,一个知识点一个文档。运算符与表达式、指针、内存分配、结构、位段操作、类的继承和派生、丰富的练习题等
嵌入式开发师必备的c++基础知识。C++是一种面向对象的计算机程序设计语言,由美国AT&T贝尔实验室的本贾尼·斯特劳斯特卢普博士在20世纪80年代初期发明并实现(最初这种语言被称作“C with Classes”带类的C)。它是...
了解不同的数据类型及其存储方式是C++基础知识的重要组成部分。 2. 指针和引用 指针和引用是C++中重要的概念。指针是指向内存中某个位置的变量,而引用是指向某个变量的别名。了解指针和引用的区别和使用方法是C++...
c++ 初学者可以学习的源代码 包含c++ 基础知识的 各种实例 如 函数 数组 类 继承
c++复习资料PPT,介绍了一些基本的c++概念,比如对象与类的概念及联系 函数重载和函数覆盖的区别 this指针的概念及作用 拷贝构造函数被调用的情况 静态成员作用和特点 多重继承时构造函数和析构函数的执行顺序 多态...
本书循序渐进地讲述了C++的基础知识、C++程序的组成及其开发过程、C++程序中的数据、表达式和语句、控制程序流程、数组与字符串、指针与引用、使用函数、函数模板、错误和异常处理、宏和预编译、面向对象的开发、...
主要内容包括程序设计基础知识、类与对象的基本概念、继承与多态、输入输出流,以及泛型程序设计。此外,本教材还介绍了一些常用数据结构基础知识,使得读者学习本书后,能够解决一些简单的实际问题。整套教材语言...
C++常识,可以对c++有基本认识,C++类。继承、多太、虚拟函数。。。。的详细介绍
1 const基础知识(用法、含义、好处) 6 2 C中“冒牌货” 6 3 const和#define相同之处 6 4 const和#define的区别 6 5 结论 6 6引用专题讲座 6 1引用(普通引用) 6 2常引用 6 3 const引用结论 6 4const修饰类 6 5...
本教程包括25部分,比较详细的介绍了c与C++的知识,包括c语言基础、数据类型、函数、指针、面向对象、类与对象、多态继承、重载等等