特定のケースでインスタンス化(定義)できますか?"T var();"常にC++の関数宣言ですか?
3
A
答えて
3
これは、C++(およびC)では常に関数宣言です。ただし、パラメータ宣言として表示される場合を除き、関数ポインタが宣言されます。
逆にいえ明記することはできません。
は "TのVAR;"常にC++のオブジェクト宣言ですか?
いいえT
はvar
それは上記のように、パラメータ宣言として現れる場合を除いて、関数として宣言される場合、関数型とすることができるので、それはありません。
0
“T var();”
は、常にC++の関数宣言ですか?
コンテキストによって異なります。
コンテキスト1:
template<typename T>
void func()
{
T var(); // function declaration
}
はコンテキスト2:ボイド戻り、引数としてT
を返す関数へのポインタを取りfunc
この場合
template<typename T>
void func(T var()) // equivalent to `template<typename T> void func (T()) { } `
{
}
。 var
を省略するかどうかは任意です。 T var(1)
について
何;、それがインスタンス化されるか、それは
T var = T(1)
と同じです。
T var(1)
T var = T(1)
がコピー初期ある一方直接初期あります。どちらの場合も、オブジェクトvar
はT(1
)に初期化されます。
T
がユーザ定義型の場合、後者の場合、にアクセス可能なコピーコンストラクタが必要ですが、前者の場合はコピーコンストラクタが必要です。
関連する問題
- 1. JavaScriptのvarキーワードで関数外の変数を宣言する
- 2. 推測shared_ptrのT関数宣言
- 3. C++空の関数宣言
- 4. C++関数の宣言
- 5. 通常の関数宣言とJavascriptの内部リターンブロック関数宣言の違い
- 6. cの型ミスマッチ関数の再宣言とは何ですか?
- 7. 変数宣言の構文は? VaRのA =(関数(){})()
- 8. C++関数エラーの複数の宣言
- 9. 他のディレクトリでC関数のC関数を宣言できますか?
- 10. Cの関数の中で関数を宣言する
- 11. varを使って変数を宣言するC#
- 12. var外部関数を宣言します
- 13. Cの関数の暗黙の宣言
- 14. 常に関数宣言でデフォルト値を持っています
- 15. ヘッダーのObj-C関数宣言
- 16. C#の汎用関数宣言
- 17. C:メイン関数のArgv宣言
- 18. Obj-C関数宣言にセミコロンが必要ですか?
- 19. T :: *は関数のパラメータリストの宣言で何を表していますか?
- 20. 関数内の宣言
- 21. PHPのAptana - 関数宣言ですか?
- 22. SMLでの関数宣言?
- 23. 宣言関数ポインタC++ arduino 1.6.11
- 24. 珍しいC関数宣言
- 25. これはC++で有効な関数宣言ですか?
- 26. 関数宣言でC++のmem_fn(member_function)を宣言するにはどうすればよいですか?
- 27. エラーメッセージC言語での変数宣言
- 28. エラー:C関数の宣言が前の宣言と矛盾しています
- 29. C++で複数回関数と変数を宣言する
- 30. var宣言でエラーが予想される宣言
'T var(1);'についてはどうですか? – lex
申し訳ありませんが、あなたのアップデートが私のコメントに答えなかったようですか? – lex
@lex:カッコが空でない場合は、明らかに何が入っているかによって異なります。 '1'はパラメータ宣言のようには見えませんが、Tのコンストラクタのint引数のようです。 –