- 浏览: 474578 次
- 性别:
- 来自: 济南
-
文章分类
- 全部博客 (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 851详情请参考:【Software Myzone】:http:// ... -
不玩设计模式的程序员不是好程序员
2013-05-02 09:40 694详情请参考:【Software Myzone】:http:// ... -
C/C++中的结构体
2012-11-07 09:02 787详情请参考:【Software Myzone】:http:// ... -
C++数组的存储|C++数组所占内存空间
2012-09-17 19:45 770详情请参考:【Software Myzone】:http:// ... -
C++中引用传递与指针传递区别(进一步整理)
2012-09-04 13:37 843详情请参考:【Software MyZone】:http:// ... -
提高C程序效率的方法
2012-08-14 18:21 464本文为firedragonpzy原创,转载务必在明显处注明: ... -
const char*, char const*, char*const的区别
2012-08-13 13:50 876const char*, char const*, char* ... -
“tr”和字符串类型的string str = "tr"对比
2012-08-11 16:11 978本文为firedragonpzy原创,转载务必在明显处注明: ... -
c++ sizeof使用
2012-08-11 15:22 870http://dev.yesky.com/143/256364 ... -
typedef分析(针对ccColor4B)
2012-08-09 19:34 1262本文为firedragonpzy原创, ... -
c++中的变量
2012-08-09 17:24 786本文为firedragonpzy原创, ... -
C++引用与指针的比较
2012-08-03 14:09 781引用是C++中的概念,初学者容易把引用和指针混淆一起。 ... -
C/C++中函数指针的含义
2012-08-01 15:54 995函数存放在内存的代 ... -
vs2010惯用快捷键设置
2012-07-27 19:54 1012首先介绍下快捷键设置入口:工具->选项->环境 ... -
几种函数调用方式
2012-07-27 15:33 987几种函数调用方式 __cdecl 是C De ... -
c++基础知识(十一)文件的复制
2012-07-25 08:49 826#include <cstdio> #inc ... -
字符编码笔记:ASCII,Unicode和UTF-8
2012-07-18 14:04 10101. ASCII码 我们知道,在 ... -
c++基础知识(十)学习C++静态成员注意事宜
2012-07-14 17:49 882C++中的一个类中还可以 ... -
c++ site
2012-07-14 09:45 803c++,含有内核的讲解:http://bdxnote.blog ... -
c++进阶(一)C语言条件编译及编译预处理阶段
2012-07-14 09:09 1394一、C语言由源代码生成的各阶段如下: C源程序->编译 ...
相关推荐
C++编程语言的基本知识点还包括了类和对象、继承与多态、模板编程、异常处理、STL标准模板库等。类和对象是面向对象编程的核心,它允许将数据和操作数据的函数封装在一起。继承是类的一种复用机制,允许新创建的类...
在学习C++基础知识时,你需要掌握以下几个关键点: 1. **基础语法**:C++的基础语法与C语言相似,包括变量声明、数据类型(如int、char、float等)、运算符(如算术运算符、比较运算符、逻辑运算符等)、流程控制...
继承是C++中的一个关键特性,允许一个类(子类或派生类)从另一个类(父类或基类)继承属性和行为。这有助于代码重用和构建分层的类结构。通过继承,子类可以扩展或修改父类的功能,而无需重复编写相同的代码。例如...
C++继承是面向对象编程(OOP)中的一个核心概念,它允许我们创建新的类,这些新类可以扩展已存在的类的功能。在这个“c++继承分类”主题中,我们将深入探讨C++中的继承机制,以及如何在Qt环境中利用这一特性进行开发...
这份"C++基础知识讲义v2"是一份专为初学者和初级C++讲师设计的学习资料,涵盖了C++的基础概念和关键特性。 1. **编程入门**(c++基礎知識1編程入門.pps):这部分通常会介绍C++的历史、基本语法,如变量声明、数据...
C++基础知识.chm文件提供了详细的C++教程,包括各个主题的索引,对于学习者来说是非常有价值的参考资料。 理解并掌握这些C++基础知识是成为熟练C++程序员的关键步骤。通过深入学习和实践,你可以逐步掌握这个强大...
C++是一种强大的、通用的编程语言,由Bjarne Stroustrup在1979年设计并开发,...这份"编程语言C++基础知识课件"将引导你逐步掌握这个强大语言的关键概念,无论你是初学者还是有一定经验的开发者,都将从中受益匪浅。
- **单一继承**:一个子类只能继承一个基类,这是C++最初支持的继承方式,有助于避免类的混乱和冲突。 - **多重继承**:一个子类可以继承多个基类,这使得子类可以融合多个基类的特性。C++也支持这种形式的继承,...
通过解决这些课后练习,初学者不仅能巩固基础知识,还能提升问题解决能力和编程技巧。 总的来说,这个C++课后小练习涵盖了面向对象编程的核心概念,通过实践这些小程序,你将更好地理解类的设计、继承的层次结构...
在C++编程语言中,继承和派生是面向对象编程的重要概念,它们允许我们构建复杂的类层次结构,实现代码重用和...通过实践这些知识点,你可以更深入地理解和掌握C++的继承和派生机制,为今后的面向对象编程打下坚实基础。
C++基础知识 C++基础知识是C++入门者和面试C++工程师岗位前的必备知识点总结。它涵盖了语法语义、STL、排序算法等面试常问的知识点。 一、面向对象的程序设计思想 面向对象的程序设计思想是把数据结构和对数据...
1. C++基础知识:C++作为一种高级编程语言,其基础知识包括变量、数据类型、运算符、控制结构(如条件语句和循环)、函数、数组、指针和引用等。这些都是程序员编写程序时必须掌握的基本概念。 2. 面向对象编程...
本基础课件旨在全面介绍C++的基础知识,帮助初学者理解和掌握C++编程的基本概念和技术。 课件内容可能涵盖以下几个关键知识点: 1. **C++简介**:介绍C++的历史、特点和适用领域,以及与C语言的区别。 2. **基本...
本资料包是专为C++初学者和进阶者设计的一系列练习,旨在帮助你从基础到高级,全面理解和掌握C++的所有关键知识点。每个知识点都以独立的.doc文档形式呈现,便于学习和查阅。 一、运算符与表达式 C++中的运算符是...
作为C++的基础知识,我们首先要理解它的历史背景。C++是由Bjarne Stroustrup在1979年基于C语言的基础上发展起来的,旨在提供一种面向对象的编程能力,同时保留C语言的效率。 1. **基础语法**:C++的基础语法与C语言...
C++是一种强大的编程语言,它结合了面向对象编程(OOP)和传统的面向过程编程的特点。C++的基础知识涵盖了许多核心概念,...无论是初学者还是经验丰富的开发者,都需要扎实的C++基础知识来编写高效、可靠的软件系统。
通过这个项目,初学者不仅可以学习到C++的基础知识,还能了解到面向对象编程中的核心概念,以及如何将这些概念应用于实际问题中。对于后续更复杂的问题,如动态对象创建、模板类等,这个项目提供了一个良好的起点。
本电子书“C++基础知识”旨在为初学者提供一个全面且实用的C++学习资源,帮助他们从零开始掌握这门语言。 C++起源于C语言,由Bjarne Stroustrup在1983年为了增加面向对象的特性而设计。它不仅继承了C语言的高效和...