C++之在类内部访问对象的私有成员

一、引言

今天看项目里的一段代码发现,竟然可以再类的成员函数中访问该类的对象的私有成员。感觉不可思议。

自己写的实例代码:

#include <iostream>

using namespace std;

class CTest
{
public:
    CTest(int n)
    {
        m_a = n;
    }

    CTest(CTest &t)
    {
        m_a = t.m_a;
    }

public:
    void Print()
    {
        cout << m_a << endl;
    }
private:
    int m_a;
};

int main(int argc, char **argv)
{
    CTest t(10);
    CTest t2(t);
    t.Print();
    t2.Print();

    return 0;
}

这段代码是可以正常运行的。

二、结论

学习的时候只记得,类的私有成员不能在外部被访问到。所以就认为绝对不能在使用对象t.m_a的方式来访问,其实可以的。因为虽然是在另外一个对象内,但是还是在类的内部访问的。

那么到底是怎么来实现的,在同类的其他对象中可以访问对象私有成员,而在不同类的对象中不可以访问呢?

posted @ 2015-04-10 18:50  冷冰若水  阅读(1751)  评论(0编辑  收藏  举报