《Effectirve C++》笔记(条款1~20)

本文是《Effective C++》笔记,涵盖条款1至20,内容涉及C++编程中的最佳实践,如使用const、enum、inline替代#define,理解和使用构造函数、析构函数、拷贝构造和赋值运算符,以及如何处理多态和资源管理。文章强调了避免异常逃离析构函数,理解编译器默认生成的函数,以及在设计类时要考虑其作为类型的整体性。
摘要由CSDN通过智能技术生成

条款1:视C++为一个语言联邦

C是多种范式汇集的语言,包括C的过程、C面向对象、Template泛型(STL模板库)、模板元编程、lambda。(后面自己补充可能由曲解原文意思)

条款2:尽量以const、enum、inline替换#define

单纯变量用const或enum替换define,形势函数的宏用inline函数替换。

class ttt{
    enum{NumTurns=5};
    int scores[NumTurns];
}

用枚举替换更像define,因为枚举和define均不可取地址,而const的变量可以被取地址。

条款3:尽可能使用const

const char *p;指针非常量,数值为常量--我还是喜欢声明时把*和变量放一起,构成一个整体,这样也容易理解,const就是对这个整体修饰的这个整体不可变也就是*p也就是值不可变。char * const p;指针常量,值非常量 对函数指定const:void a() const;此时函数不可调用非const成员(可以读非const数据成员),如某个数据成员需要被const方法操作,可以用mutable修饰:mutable boos bbb;

const char& operator[](std::size_t position)const {
  XXXXX
  return pText[position];
}
char& operator[](std::size_t position){
  return const_cast<char&>(stati_cast<const CTextBlock&>(*this)[position]);
}
避免代码重复可用const_cast去掉const符号。先将非const调用过程的this转换为const class object调用,实现对const函数调用,并将返回值的const去掉。注意可以用非const函数使用此方式,不要用const函数通过此方式调用非const函数。

条款4:确定对象使用前已先被初始化

内置(class、str

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值