C++ ⇒ VBA 書いて覚えるための初心者自己中記事

C++ ⇒ VBA 勉強の履歴を付けるというかノート代わりに使ってます

C++ インライン関数 書いて覚えるための初心者自己中記事

値を入れるだけ、取得するだけなどの簡単な関数に対して、

呼び出す時間がもったいないので呼び出す時間を無視する方法があるらしい。

それがインライン関数だそうだ。

 

インライン関数の作り方は関数の頭に(頭じゃなくてもいいけど普通はそうするらしい)

inline をつけるだけ。

 

class Student {
public:
	Student(int score);
public:
	int scoreJapanese;
};
 
Student::Student(int score) {
	scoreJapanese = score;
}
 
int GetScoreJapanese(const Student& student) {//ここの関数をinlineにしたい
	return student.scoreJapanese;
}
 
 
int main() {
	Student student(88);
 
	cout << GetScoreJapanese(student) << endl;
	
	system("pause");
}

 ↑これが

↓こうなる

inline int GetScoreJapanese(const Student& student) {//ここの関数をinlineにした
	return student.scoreJapanese;
}
 
 
int main() {
	Student student(88);
 
	cout << GetScoreJapanese(student) << endl;//この式がinline関数になったことで
 
    cout << student.scoreJapanese << endl;//こういう状態になる(関数の処理部分が直接来た感じ?)
	
	system("pause");
}

 

 これで処理部分を行中(inline)に埋め込んだ事になって呼び出し時間が無くなる。

インライン展開というそうだ。

 

 インライン関数は実装部分が見えないとだめなのでヘッダファイルに書く。

 

メンバ関数をインライン関数にする場合は二通り方法があって

1つはまっとうに宣言部の頭にinline をつける方法。

もう一つがinline をつけないが、宣言部で実装してしまう方法。

 

コンパイラによっては勝手にインライン関数にしてくれたりもあるらしい。

あとインライン関数はかならずインラインになるわけではなくて状況をみてなったりならなかったりしてくれるらしい。

 

ここまで