c++ 类内私有的结构体对于外界而言是公开的?
天蓬老师
天蓬老师 2017-04-17 14:29:50
0
2
572
#include <iostream>
class test{
    private:
        struct tes{
            int te;
        };

        tes t;
    public:
        test(){
            t.te = 5;
        }
        tes* xixi(){
            return &t;
        }
};

int main(void){
    test test1;
    std::cout << test1.xixi()->te;
    return 0;
}

代码如上, 类test中有一个私有的结构体tes, 但是为什么我能够在外界直接获取结构体内的属性呢? 该结构体对于外界而言不是不可见的吗?

天蓬老师
天蓬老师

欢迎选择我的课程,让我们一起见证您的进步~~

全員に返信(2)
Ty80

xixi() を通じて構造体を公開したため、構造体オブジェクトのアドレスを直接取得し、構造体のプロパティを取得できますが、構造体に直接アクセスすることはできません。
例を追加します。 。 。 。この例は、私の考えを表現するために使用されています。ローカルの静的変数は外部で変更できます。

リーリー
いいねを押す +0
Peter_Zhu

あなたの xixi()public に属しており、その戻り値は tes* 型であるため、tes 型が外部に公開されるとき

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート