2018-09-15

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];    //指定一个无效的数组索引导致不明确行为。
  • 学会关注线程的安全性问题

你可能感兴趣的:(2018-09-15)