More Effective C++ 学习笔记

来源:互联网 发布:mac safari开启无痕 编辑:程序博客网 时间:2024/04/30 02:46

从本篇开始,详细学习More Effective C++,做笔记,菜鸟中的菜鸟,如有大神光临,还请不吝指教!


条款1:指针与引用

使用指针的情况:

1.有时可能不指向任何对象,即指针为空;反之,引用在定义时必须初始化,而且不能空。

2.在不同的时候可能会指向不同的对象,即指针可以被不断重新赋值,视为一般的变量;引用初始化后即指向该初始值,如果重新赋值,则指向的对象的值会被改变。


引用:

1.使用一个对象且不会改变这个指向的时候;

2.重载操作符,并防止不必要的语义误解;


C++中引用必须要初始化,所以导致遇到引用的时候不会做类型检查,因此其效率要比指针高。

之前读过几篇blog,探究为什么引用要初始化呢?原因是,在C++中,引用其实是一个常量指针。即

int a = 2;int &j = a;//int const* j = &a;

因为是常量,所以必须要初始化了。也就解释了为什么引用一经指向一个对象后,就不能够再更改其指向了,因为它是一个const 的指针。

而且引用也是会被分配内存的(伪码如下),并不能简单地理解为引用对象的别名,这个只是在使用的时候给人的一种感觉,而不能揭示引用的真正的原理。

class A{int& a;int& b;}void main(){cout<<sizeof(class A);}


0 0
原创粉丝点击