C++基础系列之要点总结(1)

来源:互联网 发布:分布式数据库有哪些 编辑:程序博客网 时间:2024/06/01 10:13

1.  C++是一种静态数据类型语言,它的类型检查发生在编译时。因此,编译器必须知道程序中每一个变量对应的数据类型。相比于C,它的变量可以在使用时即时定义或声明使用。这样既可以更加方便地声明变量,又由于变量声明之处即为其使用的位置而能清楚地知道变量存在的意义。

2.  不能对void *所指向的对象进行操作,因为我们并不知道该对象的具体类型,也就无法确定能在这个对象上做哪些操作。

3.  The key differences between pointer and reference:


4.  常量引用仅对引用可参与的操作做出了限定,对于引用对象本身是不是一个常量未做限定。即对象本身可以是非常量,允许通过其他途径修改其值。


总结:普通类型可以向更细化的类型转换,反之则行不通。

NOTE:引用是对指针的深层包装,所以只有指针的引用,没有引用的指针。

5.  常量表达式是指其值不会改变并且在编译过程就能得到计算结果的表达式。

const int test =1;              //test 是常量表达式

const int sz =get_size();   //sz 并不是常量表达式

6.  auto类型(C11)说明符使编译器自动确定表达式的类型,并将左值对象转换之:


7.  遇到一条使用了类型别名声明的语句时,不要错误地尝试把类型别名替换成它本来的样子来理解:


  如果这样理解cstr: const char*cstr = 0;  //是对const pstring cstr的错误理解


8.  类型不同的变量之间不能互相赋值,之所以可以是因为存在一个隐藏的与右值类型相同的变量作为桥梁转换。

9.  auto 一般会忽略顶层const,同时底层const则会保留下来(int i = 0):

(DZH:底层是指针所指或引用绑定对象的属性,而上层则是对象本身的属性)




    符号&、*只从属于某个声明符,而非基本数据类型的一部分

10.  decltype 作用是选择并返回操作数的数据类型:


decltype 如果使用的是一个不加括号的变量,则得到的结果就是该变量的类型;如果给变量加上一层或多层括号,编译器就会把它当成是一个表达式。

切记:decltype(())的结果永远是引用!

0 0