Chinaunix首页 | 论坛 | 博客
  • 博客访问: 230163
  • 博文数量: 108
  • 博客积分: 3092
  • 博客等级: 中校
  • 技术积分: 1172
  • 用 户 组: 普通用户
  • 注册时间: 2008-07-25 16:35
文章分类

全部博文(108)

文章存档

2011年(3)

2010年(43)

2009年(19)

2008年(43)

我的朋友

分类: C/C++

2008-09-17 15:42:40

1.为什么用incline取代define

在c中保护效率的方法是使用macro,使用macro可以避免函数的调用(压栈,保护等复杂操作),而是将函数直接展开,但是在c++中macro的使用存在两个问题:
*容易隐藏难以发现的错误
*不能访问对象的私有成员
 
 
2.内联函数

原则:应该尽量的不使用macro,而使用incline。
在类中定义的函数(即有函数体的函数)自动的成为内联函数。如果仅有声明,编译器视之为普通函数。
 
3.内联函数的应用

存取函数:我们定义的类中一般会把数据成员定义成私有的或者保护的,这样,外界就不能直接读写我们类成员的数据了。对于私有或者保护成员的读写就必须使用成员接口函数来进行。如果我们把这些读写成员函数定义成内联函数的话,将会获得比较好的效率。
eg:

Class sample{
 Private:
  Int nTest;
 Public:
  Int readtest(){ return nTest;}
 Void settest(int I) {nTest=I;}
}

 
4.内联函数局限

加入函数太复杂,编译器将不会执行内联。
假如我们要显式或隐式的取函数地址,编译器也不能执行内联,因为此时编译器必须为代码分配内存从而产生函数地址。
内联是编译器的行为。
阅读(2567) | 评论(0) | 转发(0) |
0

上一篇:[c++] 常量

下一篇:称小球

给主人留下些什么吧!~~