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