|
|
1. 宏只能定义在一行,如果要多行行尾加上\
例如:#define Compare(a,b) if(a>b)\
printf("The first one is bigger.");\
else\
printf("The first one is not bigger.");
2. 宏定义中#i#1" is "被处理成"i""1"" is ",也就是"i1 is ",而i##1则被处理成标识符i1
如:
#include <iostream>
using namespace std;
#define PrintVar(v,index) cout<<#v#index" is "<<v##index<<endl
int main(){
int i1=1,i2=2,i3=3;
PrintVar(i,1);
PrintVar(i,2);
PrintVar(i,3);
}
程序的输出结果是:
i1 is 1
i2 is 2
i3 is 3
3. 抑制对读取变量的这种优化,就要使用volatile关键字
4. explicit关键字的作用是:禁止隐式调用类的单参数构造函数。
5. const_cast是一种C++运算符,作用是去除复合类型中的const或volatile属性。变量本身的const属性是不能去掉的。要想修改常变量的值,一般是去除指向该变量的指针(或引用)的const属性。
6. 如果希望在常函数中可以修改某个成员变量的值,那么就在该成员变量的声明前面加上关键字mutable,这样这个成员变量的值就可以显式被修改。
7. 引用变量本身(以r为例)不允许寻址,&r返回的是被引用对象的地址。
8. 在C++中,数组元素不允许为引用。 |
|