《Effective C++》阅读笔记01

导读

1.关于声明:告诉编译器某个东西的名称和类型,但略去细节。std::size_t numDigits(int number);
2.关于定义:提供编译器一些声明所遗漏的细节

  • 对对象而言,编译器为此对象拨发内存的地点;
  • 对function或function template而言,提供代码本体;
  • 对class或class tempalte而言,是列出它们的成员。

3.关于初始化:给对象赋值的过程
4.区分copy构造和copy赋值:如果一个新对象被定义,一定会有一个构造函数被调用Widget w1=w2;没有新对象被定义,就不会有构造函数被调用w1=w2,那么当然是赋值操作被调用了。
5.命名习惯:

  • lhs,rhs
  • Widget *pw,Ariplan *pa…..

1.让自己习惯C++

1.四大块:C、Objected-Oriented C++、Template C++、STL;
2.尽量使用const,enum,inline替换#define;

  • const定义常量指针,定义class专属常量
  • #ifdef/#ifndef还在使用
  • 对于单纯常量,多使用const或enums
  • 对于形似函数的宏,最好改用inline函数

3.const的妙用:

  • 1)与指针的搭配:
char greetint[]="Hello"
const char *p=greeting;//指向常量
char const *p=greeting;//同上
char* const p=greeting;//指针自身是常亮
const char* const p=greeting;//两者
  • 2)与函数的结合:
1.返回常量值:防止返回值被改变;
2.const参数:除非需要改动,否则一定声明为const参数;
3.const成员函数:一、可以比较容易知道哪个函数可改变对象,二、操作const对象成为可能;
4.成员变量前加mutable,即使在const成员函数内也可更改
5.const和non-const函数避免重复:使用const_cast转型,让no-const调用const版本,避免重复;
  • 3)确定对象被使用前已被初始化
1.为内置类型采用手工初始化;
2.构造函数最好使用成员初始值列,其排序应该和他们在class声明的次序相同;
3.位免除“跨编译单元之初始化次序”问题,以local static对象替换non-local static对象。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值