多行字面值(/):在一行的末尾加一反斜线符号可将此行和下一行当作同一行处理。
左值(lvalue):左值可以出现在赋值语句的左边或右边。
右值(rvalue):右值只能出现在赋值的右边,不能出现在赋值语句的左边。
C++支持两种初始化变量的形式:复制初始化(copy-initialization)和直接初始化(direct-initialization)。复制初始化语法用等号(=),直接初始化则是把初始化放在括号中。
初始化不是赋值。
初始化是创建变量并给它赋初始值,而赋值则是擦除对象的当前值并用新值代替。
对内置类型来说,赋值初始化和直接初始化几乎没有差别。
与其他变量不同,const对象默认为文件的局部变量。
通过指定const变量为extern,就可以在整个程序中访问const对象。
//defines and initializes a const that is accessible to other files
extern const int bufsize = fcn();
//
引用必须用与该引用同类型的对象初始化,必须在定义引用时进行初始化。
非const引用只能绑定到与该引用同类型的对象。
const引用则可以绑定到不同但相关的类型的对象或绑定到右值。
const int& ref = 1;
会这样处理
int no_name_value = 1;
const int& ref = no_name_value;
这跟上面的代码类型,但区别在于no_name_value这个变量你是不能使用的,根本看不到有这个变量的存在。
但确实编译器会这样处理,增加了一个没有任何名字的变量,然后让这个const& 去引用他。
记住最重要的一点,no_name_value和ref的生存周期是同步的。两个存在同时销毁。
结果如下:
begin
构造函数Value=2
print Value=2
end
析构函数Value=2
//
用class和struct关键字定义类的唯一差别在于默认访问级别:默认情况下,struct的成员为public,而class的成员为private。
因为头文件包含在多个源文件中,所以不应该含有变量或函数的定义。
例外:头文件可以定义类.值在编译时就已知的const对象和inline函数。
头文件应该含有保护符。