这两种声明方式之间是否存在运行时差异:
1)* .h
int GetVal () { return val; }
2)* .h
int GetVal ();
*。CPP
int GetVal () { return val; }
getter \ setter经常被调用,这是一个重要的性能问题。
答案 0 :(得分:0)
作为一般性陈述,没有区别。
然而,具有不同标志的不同编译器可能会生成不同的代码。
最重要的一点 - 编译器是否会内联调用。
在某些情况下,编译器的文档可能会给出一些线索。看看是否有意义。
尝试使用inline
关键字或__inline
用于MS编译器并检查二进制文件。
答案 1 :(得分:0)
取决于编译器选项,getter将被内联,而.h函数将与指针重定向一样快。
如果你把你的代码放在cpp中,你需要一个更加积极的优化才能得到这个
答案 2 :(得分:0)
我假设您正在宣布一个班级,否则就会大不相同。
// in your .h
int GetVal () { return val; }
这两者都将函数定义为内联并声明它。
// in your .h
int GetVal ();
这只是一个声明。
// in your .cpp
int Class::GetVal () { return val; }
这是该方法的定义。