更多精彩内容,请见:http://www.16boke.com
by zxy,Java/C++编程交流群:168424095
内置类型变量是否初始化决定于变量的定义位置,在函数体外定义的变量都自动初始化为0,函数体内定义的变量都不进行自动初始化。类类型变量的初始化,类通过定义一个或多个构造函数来控制类对对象的初始化,如果定义某个类的变量时没有提供初始化式,这个类就通过默认构造函数来实现。
引用必须被初始化,必须用左值来初始化,必须用与该引用同类型的对象初始化。
int ival= 1024;
int &refVal=ival;// ok: refVal refers to ival
int &refVal2; //错误:引用必须被初始化
int &refVal3= 10; //错误:必须用对象进行初始化
const引用是指向const 对象的引用。const引用可以初始化为不同但相关的类型的对象或者初始化为右值,如字面值常量。
constintival = 1024;
int &ref2=ival;//错误:非const引用指向const对象
const int &refVal = ival; //正确:引用和对象都是const
可以读取但不能修改const引用,因此,任何对const引用的赋值都是不合法的。
ref2是普通的非const 引用,因此可以用来修改ref2 指向的对象的值。通过ref2 对 ival 赋值会导致修改const对象的值。为阻止这样的修改,需要规定将普通的引用绑定到const对象是不合法的。
原因:#define定义的宏没有参数类型,只是简单的替换,不会加入到符号列表中。
char *ch =string("11").c_str();
改为
const char *ch =string("11").c_str();
更多精彩内容,请见:http://www.16boke.com