c++私有成员的访问

(1)友元函数

代码:略

(2)同一个类的实例之间可以通过函数来访问。

class A {
private:
    int value;
public:
    A(int a) { value = a; }
 
    void printA(A O)
    {
        cout << O.value << endl;
        cout << value << endl;
    }

};

int main()
{
    A a(10);
    A b(11);
    b.printA(a);


    system("pause");
    return 0;

}

这里实例对象b就可以通过成员函数来访问实例对象a的私有成员

反例:

class A {
private:
    int value;
public:
    A(int a) { value = a; }
 
    void printA(A O)
    {
        cout << O.value << endl;
        cout << value << endl;
    }

};
class B {
public:
    void printB(A a) {
        cout << a.value << endl;//编译不通过
    }
};
int main()
{
    A a(10);
    B b;

    b.printB(a);
    system("pause");
    return 0;

}

(3)子类通过继承可以访问父类的私有成员

方法1:子类继承的公有成员函数SetValue对父类的私有成员进行了访问

方法2:通过改变子类对象的指针来访问,因为继承的时候把父类的私有成员继承下来了,但是隐藏掉了,所以不能通过编译器直接访问,可以以指针的形式来访问。

代码示例:转自别处(侵删)原文链接:https://blog.csdn.net/qq_41884002/article/details/91875225

#include <iostream>
 
class Base
{
private:
    int x;
public:
    int y;
    void init_Base();
};
 
void Base::init_Base()
{
    std::cout<<"x ="<<this->x<<std::endl;
}
 
class Sub:public Base
{
public:
    int a;
    int b;
};
 
void main()
{
    Sub sub;
    int* pr = (int*)&sub;
    *pr = (int)9;
    sub.init_Base();
}

 

posted @ 2020-07-25 17:46  Homway  阅读(537)  评论(0)    收藏  举报