<2014 04 15> C++语言回顾精要(原创By Andrew)
C++语言回顾精要
《Visual C++程序设计》张岳新,这本书是很多学校的本科生C++教学用书,今天重新拿来翻了一遍。跟很多国人写的技术书籍一样,写书并不是为了让初学者看懂入门,而是为已经掌握了该知识的人罗列一遍。
这本书分为两部分:Visual C++基础&面向对象的程序设计。可以说前半本第一部分就是C语言,因为C++是C的一个超集,其对C的延伸表现为实现面向对象的一些机理和特性。用本书的话来说,就是“封装性、继承与派生性、重载与多态”。
第一部分,非OO编程
它对C语言的扩展仅仅体现在以下几个方面:
1、关键字++: (new/delete 动态内存分配成为语言本身的特性 ---》 calloc + 构造与析构函数调用 的一个封装)
(OO:class this friend virtual operator /private protected public/ )
(asm catch template throw try 汇编&异常机制)
2、C++的I/O流类库:cin>> cout<< (不属于语言,但太常用,C语言用print函数库)
3、作用域部分:变量可以在块内定义(C不可以),以及相关的一些变量作用域的规则
4、函数重载:可以定义多个同名函数(C不可以),根据形参个数或类型来实现函数重载
5、引用:可以通过&name1 = name来定义引用类型变量,实现函数调用时“自然的”按地址传递变量(C不可以,只能用指针)
-----------------------------------------------------------------------------------------
第二部分:OO编程特性/方法
C也是可以实现OO编程的,这只是一种观念和方法论,主要的手段是结构体(结构体中的的数据+函数指针等于封装了类)(ooc programming http://ooc-coding.sourceforge.net/)。但是C++在语言本身专门对OO思想进行了设计和延伸。
1、C++中,结构体与类的<唯一不同>是成员权限默认不同(类 private 结构体 public)。隐含指针this、构造函数与析构函数。friend友元函数,可以定义之用来在类外访问类内(为了提高程序设计便利)。
2、多态性的实现:重载技术(编译时多态:运算符&函数重载)、虚函数(运行时多态:virtual)---->(为了设计通用程序)。
3、Other Technologies:
实现类型转换与拷贝的构造函数
多重继承--->冲突、支配规则和赋值兼容性、虚基类
虚函数、纯虚函数、静态成员
const、volatile对象和成员函数
指向类成员的指针
一般来说C++相对与Java这样的纯面向对象语言的特点在于:一、需要完全兼容C语言,导致语法历史遗留问题。二、功能过于庞大的OO机制以及一些便利的方法(如第3点Other Technologies),导致头绪过多。
<2014 04 15> C++语言回顾精要(原创By Andrew)的更多相关文章
- 04 Zabbix核心概念回顾
04 Zabbix核心概念回顾 1. 监控四大核心功能: 数据采集----数据储存----数据展示和数据分析-----告警 1.1. 数据采集方式: SNMP:被监控设备上面必须启用SNMP a ...
- mini2440移植uboot 2014.04(三)
我修改的代码已经上传到github上,地址:https://github.com/qiaoyuguo/u-boot-2014.04-mini2440.git 参考文档: s3c2440手册(下载地址) ...
- 2014.04.28基于CPLD的LCOS场序彩色视频控制器设计
基于CPLD的LCOS场序彩色视频控制器设计 作者:宋丹娜,代永平,刘艳艳,商广辉 发表刊物:液晶与显示,2009 学习时间:2014.04.28 文章讲述了-- (和上一篇论文有些相似之处) 1. ...
- ApexSql Log 2014.04.1133破解版&补丁
已上传最新的2016版本,请移步: http://www.cnblogs.com/gsyifan/p/ApexSql_Log_2016_Crack.html 状态不好,鬼使补差的跑到服务器上updat ...
- SAP-MM:收货转储时提示 M7053“只能在公司代码 **** 的期间 2014/04 和 2014/03 中记账”
错误信息 消息号M7053 解决方法 Step 1.使用MMPV进入"关闭账期"界面. Step 2.输入"公司代码"."期间".& ...
- ubuntu12.04&15.04 安装lamp(12.04为主)
ubuntu 12.04&15.04下安装lamp环境 注意:如果是ubuntu15.04下,apache2.4.10的话,直接在/etc/apache2/apache2.conf文件的后边直 ...
- new Date('2014/04/30') 和 new Date('2014-04-30') 的区别
new Date('2014/04/30') Wed Apr 30 2014 00:00:00 GMT+0800 (中国标准时间) new Date('2014-04-30'); Wed Apr 30 ...
- mini2440移植uboot 2014.04(七)
上一篇博文:<mini2440移植uboot 2014.04(六)> 代码已经上传到github上: https://github.com/qiaoyuguo/u-boot-2014.04 ...
- mini2440移植uboot 2014.04(六)
上一篇博文:<mini2440移植uboot 2014.04(五)> 代码已经上传到github上:https://github.com/qiaoyuguo/u-boot-2014.04- ...
随机推荐
- git教程,切换分支并拉去
进了目录切换分支: git checkout 5.1 切换完成后拉去分支为: git pull https://www.liaoxuefeng.com/wiki/0013739516305929606 ...
- 【JAVA设计模式】外观模式(Facade Pattern)
一 定义 为子系统中的一组接口提供一个一致的界面.Facade模式定义了一个高层的接口,这个接口使得这一子系统更加easy使用. 二 案例 一个子系统中拥有3个模块.每一个模块中都有3个方法.当中 ...
- Django--ORM基础
ORM(映射关系) 映射关系: 表名 <-------> 类名 字段 <-------> 属性 表记录 <------->类实例对象 创建表(建立模型) 在Djan ...
- PLSQL Develope连接oracle数据库配置
首先我们在讲PLSQL Develope连接oracle数据库配置之前,先讲下如果不用PLSQL Develope连接oracle数据库,那该怎么办,那就是在本机安装oracle数据库,不过这个对于配 ...
- (译)Getting Started——1.2.4 Tutorial:Storyboard(故事板)
该教程是基于你在前面的课程中构建的项目上进行的.学完本教程后,你将使用你前面学到的视图.视图控制器.动作.导航的内容,还会为应用创建一些关键的用户界面,并在场景中添加行为 以下就是本节课的内容: 1. ...
- oracle+SQL优化实例
1. 减少I/O操作: SELECT COUNT(CASE WHEN empno>20 THEN 1 END) c1,COUNT(CASE WHEN empno<20 THEN 1 ...
- 组件(Conponent)是图形用户界面最基本的部分
组件(Conponent)是图形用户界面最基本的部分,也称为构件 ,是可以以图形化的方式显示在屏幕上,并能与用户进行交互的对象,例如一个按钮,一个标签等. 组件不能独立地显示出来,必须将其放在一定的容 ...
- QT国际化,中英文等多语言界面显示的方法
在网上学习了一下QT的国际化使用方法,最后将自己试成功的方法总结例如以下: 当中遇到的问题有:生成的ts文件里 代码中的中文 有的不显示,有的显示乱码. 步骤1: 生成.ts文件,在pro项目文件 ...
- poj 1322 Chocolate (概率dp)
///有c种不同颜色的巧克力.一个个的取.当发现有同样的颜色的就吃掉.去了n个后.到最后还剩m个的概率 ///dp[i][j]表示取了i个还剩j个的概率 ///当m+n为奇时,概率为0 # inclu ...
- 苹果 App Store 申请和管理相关知识
本文转载至 http://blog.csdn.net/yu0089/article/details/8027669 app store为开发者提供四种类型的申请: 个人ios开发者计划$99/年 公司 ...