《C++高级编程》红皮书笔记

1、C++使用字符串有3种风格:

• C风格,将字符串表示成字符数组

• 把字符串包装在一种更易于使用的串类型中,如string类

• 一些非标准的方法

 

2、在编写程序之前,先不要具体编写任何代码,而应当首先设计程序,避免陷入到应用程序中;

编写程序如果没有设计,就像你建造一座楼房,但是却没有设计图纸。

 

3、C++两个基本原则:抽象和重用

 

4、面向对象程序设计只是一种编程思想,是用另一种思路来考虑程序中发生了什么。

过程性方法的基础是问这样一个问题:“这个程序要做什么?”;与此不同,面向对象方法则问了另一个问题:

“我要为那些实际对象建模?”。

OOP所基于的思想是:不应该将程序划分为任务,而应当划分为物理对象模型。

 

5、库(library):是用于完成一个特定任务(如解析XML)或者处理一个特定领域(如加密)的代码集。

框架(framework):是我们设计程序时所基于的一个代码集。如MFC为创建windows窗口应用程序提供了一个框架。

框架通常决定程序的结构。

 

6、C++STL是同构的:每个容器中只允许有相同类型的元素。

vector、list、deque称为顺序容器,因为他们存储了一个元素序列。

 

7、制表符和空格是不同的,制表符可以是任意长度,空格只是空格。

建议使用制表符代表4个空格的编辑器。

 

8、如果声明了一个默认构造函数或者其他任何构造函数,编译器就不会再生成默认的构造函数。(要注意最好自己声明一个默认构造函数)

 

9、初始化列表可以在构造数据成员的同时进行初始化。

另外,初始化列表的顺序要按照类中数据成员定义的顺序进行,否则编译器会提示出错。

 

10、为什么模板优于其他通用编程技术?

• C/C++可以使用void*来存储任意类型的一个指针。但是在存储和使用的时候都要进行数据类型转换,是类型不安全的;

• 通过多态,该类的子类都可以以基类指针的方式存储,但并不是类型安全的。从容器中删除一个对象时必须要知道它的实际类型,并且还要转换到对应的子类;

 

模板的缺点:

• 语法复杂;

• 解析很困难;

• 模板要求同构的数据结构;

• 存储不同类型的对象是时会代码膨胀code bloat,编译器会为每一种类型都生成一种实现代码;

 

11、模板和集成可同时使用

 

12、类的赋值操作符

ClassName& operator=(const ClassName& other);

注意返回值。

另外,赋值操作符还要允许自赋值,在方法的开始要进行检查:

if(this==&other)

   return *this;

 

13、定义一个指向指针的指针

 

14、inline

C++允许程序员建议编译器将一个函数调用实际上不当成是函数调用,而是直接把这段代码嵌入到特定位置。

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值