20140808 const和define区别 内联函数(inline) 栈和堆的地址分配 栈帧
1、const和define区别
const有数据类型(不能改变的变量),define只是简单的字符串替换,没有数据类型。
C++程序用const完全取代 define。
const还可以类成员函数为不能改变成员变量的恒态函数。(mutable int a除外)
例子:
const int buffsize=10;
int buf[buffsize];
在C编译器中编译出错,因为
2、string类的使用
string string[3]={“aa”,“bb”,“cc”};//定义了一个包含三个string对象的数组。
3、内联函数(inline)
inline是指嵌入代码,在调用内联函数的地方直接嵌入代码,不需要中断调用,所以速度更快。和C中的#define相比,有类型检查,更加可靠安全。
什么时候使用:
一个函数不断被重复调用,函数的代码量少。如swap函数
inline void swap(int a,int b){a=a^b;b=a^b;a=a^b;}
4、栈和堆的地址分配
int a=1;
int *p=&a;
int &Ra=a;
cout<<&a”<<&a<<endl;
cout<<&p<<endl;
cout<<&Ra<<endl;
按变量定义的顺序,在栈上的地址分配的由高地址向低地址分配的
5、虚继承
6、函数调用也叫做过程,需要理解栈帧
http://blog.csdn.net/yxysdcl/article/details/5569351(栈帧讲得非常好)