具有不同声明的函数的C ++运行时

时间:2014-01-08 15:33:36

标签: c++ performance getter-setter

这两种声明方式之间是否存在运行时差异:

1)* .h

int GetVal () { return val; }

2)* .h

 int GetVal ();

*。CPP

 int GetVal () { return val; }

getter \ setter经常被调用,这是一个重要的性能问题。

3 个答案:

答案 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; }

这是该方法的定义。