C++ 点滴(一)

1.变量初始化的顺序:申明时初始化--->初始化列表初始化---->构造函数初始化。后一项的赋值会覆盖前一项的赋值。

2.运算符重载时,提示“表达式必须包含类类型”,此时一般需要将this.修改为this->即可。

3.bool类型的值在使用std::cout输出到控制台时,true为1,false为0。

4.C++控制结构语句可以分为3类:

  1) 顺序结构,顺序执行的语句

  2)选择结构,一般就是if-else、switch-case-break两种语句

  3)循环结构,while、do while、for这三种语句

5.算术数据类型的选择原则:

  1)如果明确数值不可能为负数,则使用无符号类型;

  2)浮点类型尽量使用double;因为float精度太小,而double float精度太大没有必要;

  3)尽量使用unsigned char或者signed char,而避免使用char,char会因为平台不同导致所表达的值不同,会对计算结果带来影响;

  4)使用int来执行整数运算。short太小可能会造成计算溢出等情况,而long和int一般尺寸相同。如果一个数无法用int表示,则尽量使用long int来表示而不是long;

  5)尽量避免使用bool或者char来执行算术运算。

6.可以通过type_info来获取类型信息,用法如下:

  

 7.形如 int a={1},这类初始化方式称为 列表初始化,当对内置类型列表初始化时要求初始化不能有信息损失,比如将long double传递给int时,将丢失小数信息,此时编译器会提示错误:“错误 C2397 从“long double”转换到“int”需要收缩转换”。

8.内置类型变量(比如int,double这些)在函数体外若未显示初始化,则将被初始化为0;在函数体内若未初始化,则为未定义,如果未定义并使用,程序将会异常,其他的类型不分函数体内外,全部由类自身来决定未显示初始化时的对象状态。

9.C++ 支持分离式编译,为了支持分离式编译,C++可以将变量的申明和定义分开,变量的申明使用extern来修饰,并且不能显示初始化,如果显示初始化,则变为变量定义;变量的申明可以多处申明,但是定义只能有一份。

10.作用域包含全局作用域和块作用域,全局作用域类的变量整个程序范围内均可使用,块作用域内的变量只有在块类里才能使用。

11.C++中嵌套作用域可以重新定义外作用域同名的局部变量名称,但是C#不行,C#编译器会报如下错误:“错误 CS0136 无法在此范围中声明名为“i”的局部变量或参数,因为该名称在封闭局部范围中用于定义局部变量或参数”。具体原因可参见“https://www.codeproject.com/Articles/14398/Chapter-3-Basic-Concepts-C-Programming-Language-Th” 3.3节.

原文地址:https://www.cnblogs.com/chyshx/p/14265438.html