Effective C++之导读部分

声明:

  1. 文中内容收集整理自《Effective C++(中文版)第三版》,版权归原书所有。
  2. 本内容在作者现有能力的基础上有所删减,另加入部分作者自己的理解,有纰漏之处敬请指正。

目录

1. 术语

声明和定义

初始化

值传递和const引用传递

2.命名习惯

3.关于线程

4.TR1和Boost


1. 术语

声明和定义

1.声明式:是告诉编译器某个东西的名称和类型,而略去细节。

2.定义式:是编译器为对象(内置类型也看做对象)拨发内存的地点。

  • 若只声明一个变量而不定义,则需要在前面加一个extern修饰符
int x; //定义式
extern int y; //声明式

初始化

1.初始化是给予对象初值的过程。用户自定义类型的对象初始化由构造函数执行。

  • default构造函数:要不没有参数,要不所有的参数都有缺省值
  • 构造函数的显式类型转换和隐式类型转换
class B
{
public:
	explicit B(int x){} //显式构造函数
};

void doSomething(B bObject); //函数,接收一个类型为B的对象
B bObj1; //定义一个类型为B的对象
doSomething(bObj1);  //正确
doSomething(28); //错误,doSomeething只接受一个类型为B的参数,而int与B不可以隐式类型转换
doSomething(B(28)); //正确,B构造函数将int显式转换为B类型供调用
  • 构造函数默认声明为implicit
  • 声明为explicit的构造函数往往更受欢迎,因为它可以禁止编译器执行非预期的类型转换

2.copy构造函数和copy操作符

  • copy构造函数被用来“以同类型初始化自我对象”。
  • copy赋值操作符被用来“从另一同类型对象中拷贝其值到自我对象”。
  • 一个语句中如果有新对象被定义,那么一定会有一个构造函数被调用。
class Widget
{
public:
	Widget(); //默认构造函数
	Widget(const Widget&); //拷贝构造函数
	Widget& operator=(const Widget&); //拷贝赋值运算符
};
Widget w1; //调用默认构造函数
Widget w2(w1); //调用拷贝构造函数
Widget w3 = w2; //调用拷贝构造函数,并不一定有“=”就一定是拷贝赋值运算符

值传递和const引用传递

值传递往往是不好的选择,const引用传递往往是比较好的选择。

2.命名习惯

  • 二元操作符两个常用的参数名称:lhs和rhs。
  • 对于成员函数,左侧实参由this指针表现出来,所有有时候会单独使用右参数名rhs。
  • “指向类型为T的对象”的指针命名为:pt,意思是“point to T”。

3.关于线程

了解

4.TR1和Boost

了解

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值