Posted on 2007-08-13 10:24
宝杉 阅读(196)
评论(0) 编辑 收藏 引用 所属分类:
C++
内联函数:既增加安全性,又可以调用类的数据成员。
故C++中,用内联取代所有宏,但在Debug版本中,assert是例外。
assert不产生任何副作用,调用函数会引起内存、代码的变动,所以assert是宏。
内联格式:
void Foo(int x, int y);
inline void Foo(int x, int y) // inline与函数定义体放在一起
{
…
}
用于实现的关键字,而非用于声明的关键字。
在类中的规范格式:
class A
{
public:
void Foo(int x, int y);
}
// 定义文件
inline void A::Foo(int x, int y)
{
…
}
什么情况不适合使用内联?
1 内联函数代码较长,导致内存消耗较高。
2 内联函数包括循环,执行内联函数代码比调用函数的开销大。
F:为什么构造和解析函数不使用内联?
Q:因为析构函数可能“隐藏”一些行为,例如执行基类或成员对象的析构过程。
有时候编译器会自动取消一些不值得的内联,所以在声明时不写inline是合理的。