0

C ++でプログラムを読んでいるときにこれに出くわしました

inline Controller* Get_it() { // ... bla bla

これが何を意味するのかわかりません。これは Get_it 関数の定義を暗示していますか? Get_it 関数が定義されているファイルを検索しましたが、見つかりませんでした。構文 a* b は、b が構造体 a のオブジェクトを指すポインタであることを意味すると思いますが、構造体 Controller はありません。ただし、別の場所で定義されたクラス Controller があります。

よろしくお願いします。私はC++が初めてで、理解しようとしています。

4

5 に答える 5

1

キーワードinlineは定義されているものに影響し、関数にのみ適用されます。正式には、関数の複数の定義を許可します (実際には必要です)。また、他の場所で呼び出しを生成するのではなく、呼び出しサイトで直接関数のコードを生成しようとするコンパイラへの「ヒント」でもあります。(正式な定義の動機は、コンパイラが定義にアクセスできない限り、通常、インラインでコードを生成できないことです。)

于 2013-04-04T09:43:17.247 に答える
0

キーワードは、メソッドが実装されている場所に関係なくinline、メソッドを inline 1として定義します。上記の署名は、関数がオブジェクトGet_it()へのポインターを返すことを意味しControllerます。関数自体はインラインです。

1インラインとは、メソッド get が vtbl を介してアドレス指定されるのではなく、get がオブジェクトのメモリに直接割り当てられることを意味します。そのため、オブジェクト インスタンスでメソッドを呼び出すときに間接的ではありませんが、オブジェクト インスタンス自体のメモリ サイズは大きくなります。

于 2013-04-04T09:43:54.937 に答える