プライベート型の自動
変数の宣言に auto を使用すると、プライベート クラスのメンバーを扱うときに混乱を招く可能性があります。この例では、コードは正常にコンパイルされます。
class Foo { struct Bar { int i; }; public: Bar Baz() { return Bar(); } }; int main() { Foo f; auto b = f.Baz(); std::cout << b.i; }
このコードは有効ですか?もしそうなら、なぜですか?
コードは確かに有効です。 auto は、テンプレート タイプの推定と同じルールに従います。 auto b = f.Baz(); の理由は次のとおりです。そして楽しい(f.Baz());コンパイルは、名前がプライベートであっても Foo::Bar の型が使用できるためです。
名前がプライベートである場合、なぜその型は使用可能ですか?
プライベート型へのアクセス不能は、その名前にのみ適用されます。型自体は引き続き使用できるため、型をクライアント コードに返したり、テンプレート関数に渡したりすることが可能です。
以上が`auto` によるプライベート クラス メンバーの型推定は C で有効ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。