代码之家  ›  专栏  ›  技术社区  ›  Nagaraj Tantri

如何违反封装属性?

c++
  •  0
  • Nagaraj Tantri  · 技术社区  · 14 年前

    如何在没有编译时错误的情况下违反封装属性(在C++中

    只是好奇而已。。

    5 回复  |  直到 14 年前
        1
  •  7
  •   fredoverflow    14 年前
    #define private public
    #define protected public
    #define class struct
    

    好了:-)

        2
  •  2
  •   kikito    14 年前

    唯一合法的方法就是使用 friend classes / methods .

    但是,为了使用它们,您需要修改具有私有成员的类—此时只需从 private protected public

        3
  •  1
  •   Robert P    14 年前

    你不能去*。封装是C++的一个特点。

    **除非你做了一些黑暗、邪恶和魔法的事*

        4
  •  1
  •   Phil Miller    14 年前

    您可以更改定义有问题的类的标头,以公开所需的成员。换句话说,就是移除封装。别这样。

        5
  •  0
  •   Ozan HELPY    14 年前

    设计一个镜像类,该类的成员与您试图访问其非公共成员的类的成员相同,并将所述类的对象强制转换为镜像类。

    class original
    {
      private: int x,y,z;
      public: int dosomething();
    };
    
    class mirror
    {
      public: int x,y,z;
    };
    
    int main()
    {
      original *o = new original;
      mirror *m = (mirror*)o;
      m->x = 10;
    }