2016-12-05 2 views
0

Я много искал для встраивания в C++ в Интернете, но кажется, что каждый предпочитает другой способ реализации.C++ Inlining - что такое «правильный» способ

Моя проблема выглядит следующим образом:

// header-file 
class Test { 
    int i; 
    public: 
     int getI(); 
}; 
// source-file 
int Test::getI() { return i; } 

Поскольку эта функция getI() вызывается несколько тысяч раз, я думаю, что это полезно «инлайн» эта функция. Что такое лучший способ сделать это:

// 1) define the function within the class-definition 
class Test { 
    int i; 
    public: 
     int getI() { return i; } 
}; 

// 2) define the function within the header-file 
inline int Test::getI() { return i; } // directly located under class-definition 

// 3) let the fct-definition stay in the source file and write "inline" before it (somehow this does not compile) 

Может ли вы дать мне подсказку, какой путь является лучшей или наиболее производительной реализацией? Спасибо за помощь :)

+3

1 и 2 должны быть идентичными с точки зрения генерируемого кода и являться лишь вопросом стиля или личных мнений, поэтому невозможно дать окончательный ответ. –

ответ

0

1 и 2 идентичны. Это полностью зависит от компилятора, чтобы на самом деле вызвать его встроенным способом. Если вы определяете сложную «встроенную» функцию внутри класса, запись inline не гарантирует, что она будет встроенной. Короче говоря, это зависит от компилятора.

Смежные вопросы