Effective c++第三版
绪论
std::size_t是一个typedef,属于unsigned类型。
- 构造函数被声明为explicit,可阻止被用来执行隐式类型转化:
class A
{
public:
A(); //默认构造函数
};
class B
{
public:
explicit B(int x = 0, bool b = true); //默认构造函数
};
class C
{
public:
explicit C(int x); //非默认构造函数
};
void doSomething(B bObeject); 函数,接收一个类型为B的对象
B bObj1; //一个类型为B的对象
doSomething(bObj1); //没有问题,传递一个B给doSomething函数
B bObj2(28); //没有问题,根据int 28建立一个B
doSomething(28); //错误!,doSomething应该接收一个B,不是int,而int至B
//没有隐式转换。
doSomething(B(28)); //正确,使用
- 通过值传递的方式传给函数通常不建议采用,建议采用常引用传递的方式。:详见条款20
- 避免不明确的行为如:
int* p = 0; //p是个null指针
std::cout << *p; //对于一个null指针取值会导致不明确行为。
char name [ ] = "Darla"; //name是个数组,大小为6
char c = name[10]; //指定一个无效的数组索引导致不明确行为。
- 学会关注线程的安全性问题
网友评论