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;

按变量定义的顺序,在栈上的地址分配的由高地址向低地址分配

image

5、虚继承

2f738bd4b31c8701e5684ad2257f9e2f0708ff2c

6、函数调用也叫做过程,需要理解栈帧

http://blog.csdn.net/yxysdcl/article/details/5569351(栈帧讲得非常好)

posted @ 2014-08-08 16:29  yexuannan  阅读(290)  评论(0编辑  收藏  举报