を作成されるオブジェクトずにクラスメソッドにアクセスすることができる機能私は最近、このコードに出くわしたC++ - それは静的である、または
#include<iostream>
using namespace std;
class A
{
public:
void foo() const { cout << "A::foo() const\n"; }
void foo() { cout << "A::foo()\n"; }
};
A bar() { return A(); }
const A cbar() { return A(); }
int main()
{
bar().foo();
cbar().foo();
}
私はhttp://en.cppreference.com/w/cpp/language/returnからreturnステートメントについては、この部分を読んで:
は、式を評価し、現在の関数を終了し、暗黙的に関数の戻り値の型に変換した後に、式の結果を呼び出し側に返します。
A()は式ですか?このコードを読む前に、私はそれが有効な構文であるとは考えていなかったでしょう。
バー()は、基本的にバーの戻り値の型は()であることを意味しますが、
は、私は2つの質問がある:
1)何()とリターン()関数バー内で行いますか()?
2)bar()はAクラスのfoo()に静的なことなくどのようにアクセスできますか? - クラスAのオブジェクトも定義していないということです。
私にいくつかのヒントを教えてください。
bar()は一時的なA()オブジェクトを作成しますか?もう少し詳しいことを教えてください。 – novice
@TheNoviceは、あなたがコメントしたときにそれを書いていました:) – StoryTeller
ありがとう - これはたくさん説明します。 – novice