<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- ...
随机推荐
- .Net并行编程高级教程(二)-- 任务并行
前面一篇提到例子都是数据并行,但这并不是并行化的唯一形式,在.Net4之前,必须要创建多个线程或者线程池来利用多核技术.现在只需要使用新的Task实例就可以通过更简单的代码解决命令式任务并行问题. 1 ...
- Limu:JavaScript的那些书
博主说:本博客文章来源包括转载,翻译,原创,且在文章内均有标明.鼓励原创,支持创作共享,请勿用于商业用途,转载请注明文章链接.本文链接:http://www.kein.pw/?p=50 去年(2012 ...
- lua 小技巧
lua 小技巧 把常用的工具函数添加到 _G 里面,所有的文件都可以直接调用: ``` lua -- 在 a 文件中将工具函数添加到 _G: _G.IsEmptyStr = function(str) ...
- Powershell对象条件查询筛选
在 Windows PowerShell 中,与所需的对象数量相比,通常生成的对象数量以及要传递给管道的对象数量要多得多.可以使用 Format cmdlet 来指定要显示的特定对象的属性,但这并不能 ...
- Retrofit--官网2.1.0
Retrofit--官网2.1.0 android Retrofit 介绍 API 描述 请求方法 URL 处理 请求体 表单的 ENCODED 和 MULTIPART HEADER 处理 同步 VS ...
- jQuery 时间戳转化成时间
//时间转换 function formatDate(now) { var now= new Date(now); var year=now.getFullYear(); ...
- C++11 中function和bind以及lambda 表达式的用法
关于std::function 的用法: 其实就可以理解成函数指针 1. 保存自由函数 void printA(int a) { cout<<a<<endl; } std:: ...
- 基于nc实现聊天
需要 Netcat(在网络上通过 TCP 或 UDP 读写数据),CentOS 6.x 系统中默认没有安装,经过测试,如果通过 yum 直接安装,运行时会有 “nc: Protocol not ava ...
- JVM性能调优监控工具专题一:JVM自带性能调优工具(jps,jstack,jmap,jhat,jstat,hprof)
性能分析工具jstatjmapjhatjstack 前提概要: JDK本身提供了很多方便的JVM性能调优监控工具,除了集成式的VisualVM和jConsole外,还有jps.jsta ...
- ActiveMQ 无法启动 提示端口被占用 解决方案
http://bob-zhangyong.blog.163.com/blog/static/17610982012729113326153/ ————————————————————————————— ...