ホームページ > バックエンド開発 > C++ > `auto` によるプライベート クラス メンバーの型推定は C で有効ですか?

`auto` によるプライベート クラス メンバーの型推定は C で有効ですか?

Patricia Arquette
リリース: 2024-12-16 01:48:14
オリジナル
999 人が閲覧しました

Is Private Class Member Type Deduction with `auto` Valid in C  ?

プライベート型の自動

変数の宣言に 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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート