LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
12
返回列表 发新帖
楼主: viper

inline 应该写在 .h 文件里吗?

[复制链接]
发表于 2004-9-7 20:44:24 | 显示全部楼层
关于inline函数在CPPL书中有说明,inline函数具有static的属性而不是一般函数的extern属性,就是说你在一个CPP文件里定义了一个inline函数,在别的文件里不能调用这个inline函数(它对外不可见)。所以一般都定义在Class的头文件里面,最好做成类的friend函数。而且C++对函数做成inline的形式有很多限制,并不是声明成inline函数就一定在编译器里将其展开成inline,对于返回左值的函数都不会编译成inline模式,即使你声明了它为inline,因为展开之后没有办法放在赋值符号的左边。
发表于 2004-9-8 09:57:04 | 显示全部楼层
inline修饰符是对编译器的一个建议,而不是指示。编译器会自己决定是不是真的来inline的
发表于 2004-9-8 16:44:48 | 显示全部楼层
对于inline来说,必须将其写在函数体而不是函数声明前才会有效,类内实现的函数会被认为是inline的,还有一般情况下inline都写在头文件中,因为目前的大多数编译器都不支持在实现文件(.cpp)中写
发表于 2004-9-8 21:17:21 | 显示全部楼层
Agree with 无双,JBug,and lucifer.
U should put inline functions' definations in header files.
Two form:
1. member funcions defined inside class body are auto inline, but whether they are really inlined depend on compiler.
  1. /* person.h */
  2. class Person
  3. {
  4.    int m_age;
  5. public:
  6.    ...
  7.    int getAge() { return m_age; } // [color=red]defination after declaration,implicit,"inline" keyword not need[/color]
  8. }
复制代码

2. member functions declared in class body, but defined outside class body can be inlined by prefixing "inline" keyword.
  1. /* person.h */
  2. class Person
  3. {
  4.     int m_age;
  5. public:
  6.     ...
  7.     inline int getAge(); // declaration,explicit
  8. };
  9. // [color=red]also in persion.h[/color]
  10. inline int
  11. Person::getAge() { return m_age; } // defination
复制代码
发表于 2004-9-9 16:48:42 | 显示全部楼层
怎么我在thinking in c++里看到说头文件里可以不写inline,实现时才需要标明inline
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表