访问私有变量疑问的解决

原创 2004年09月21日 20:26:00

    “呵呵,你说得没错,访问权限是应该对class控制还是应该对object控制 在各个语言里不尽相同,但C++选择了class。 
    既然这样,那么“CMyString a_cOther的变量m_pcData明明是私有的”说得就不对了,应该理解为m_pcData对非CMyString(继承这里先不谈)而言是私有的,而不能理解为m_pcData对非a_cOther而言是私有的。”
    周星星(http://blog.vckbase.com/bruceteen)在给我的上一篇疑问中作了这样的解答。

    按照他的意思,应该是对于相同类的不同对象ObjA和ObjB,他们应该是可以互相访问对方的私有变量的。
    我做了这样的尝试。
    新建一个类
class CTest 
{
public:
        void SetValue(int a_iValue);
        int GetValue();
        void SetValue(CTest a_cTest);
        CTest(int a_iValue = 0);
        virtual ~CTest();

private:
        int m_iTest;
};

各个函数的实现如下:
CTest::CTest(int a_iValue)
{
    m_iTest = a_iValue;
}

CTest::~CTest()
{
       
}

void CTest::SetValue(CTest &a_cTest)
{
    m_iTest = a_cTest.m_iTest;
    a_cTest.m_iTest = -1;
}

int CTest::GetValue()
{
     return m_iTest;
}

void CTest::SetValue(int a_iValue)
{
    m_iTest = a_iValue;
}

    如果他说话是对的话,那么下面一段程序
       
        int iTmp = 1;
        CTest clsTest1(iTmp);
        CTest clsTest2;
        clsTest2.SetValue(clsTest1);
    不仅可以运行,而且最后的结果应该是
clsTest1.m_iTest == -1;
clsTest2.m_iTest == 2;

    运行结果果真如此。

    周星星(http://blog.vckbase.com/bruceteen)的话是对的:访问权限是应该对class控制还是应该对object控制 在各个语言里不尽相同,但C++选择了class。
    看来我对很多东西还是不懂,呵呵,长路漫漫,吾将上下求索……

访问私有变量的疑问

    今天一同事出去面试回来,带回来一道题,呵呵。    给定一个字符串的类,类的各成员和函数已经定义。现在要求,根据定义,写出各个函数的实现。类的定义如下:class CMyString  {  ...
  • ZiJinShi
  • ZiJinShi
  • 2004年09月20日 21:32
  • 2147

访问私有变量,私有方法

我们都知道Java的访问权限分为public,包,protected,privated。没有相应的访问权限是无法访问类,对象,变量,方法等。我们都知道单例模式,是把构造方法私有化,其它类就无法创建该类...
  • wujumei1962
  • wujumei1962
  • 2015年02月04日 17:03
  • 1114

iOS runtime访问/修改私有变量

最近一直在了解runtime,我们知道runtime是运行时,相对于OC来说是比较底层的C语言的消息机制。利用runtime可以做很多事情,在程序运行过程中,动态创建一个类、动态的为类添加属性和方法,...
  • xin__dong
  • xin__dong
  • 2015年08月12日 14:53
  • 1200

用灵活的指针访问类私有变量

看了http://blog.csdn.net/v_JULY_v/article/details/6446364 这篇博文后,自己做了一个实验,发现C++ 的指 针很灵活。到底有灵活呢,我们用简单的代...
  • kamsau
  • kamsau
  • 2014年04月15日 16:48
  • 1019

java访问类的私有变量和方法

import java.lang.reflect.Field;   import java.lang.reflect.InvocationTargetException; import java....
  • dfdsggdgg
  • dfdsggdgg
  • 2015年09月19日 12:15
  • 1731

访问类的私有变量的两种方式

在用image加载bmp图片时,要使用某点的像素值,传统的做法是scanline、canvas.pixel、或者用api函数来获取。 既然image能画出bmp图片来,bmp中应该包含这个位图的像素值...
  • dbyoung
  • dbyoung
  • 2015年04月09日 14:00
  • 2140

js 函数内部私有变量的 访问方式

// 全局静态私有变量访问(function(){ var name = "李四"; // 私有变量 function show(){ r...
  • zxf13598202302
  • zxf13598202302
  • 2016年12月20日 15:01
  • 1613

python类的动态方法是否可以访问到私有变量。

python的类,类的私有属性__attr。私有属性只能通过类的方法来访问。 又学习到了实例和类都可以动态增加方法和属性。 在此我就有一个疑问。类的动态增加的新方法,可以修改类里的私有属性...
  • wbd880419
  • wbd880419
  • 2017年12月28日 10:42
  • 72

Objective-C学习笔记之获取私有变量的值

内容。 1、下面是自己定义的一个类,里面有一个私有变量mt_,并且在初始化值为"Ha Ha Ha"。 @interface Mobj : NSObject {  @private      N...
  • majiakun1
  • majiakun1
  • 2015年07月23日 09:02
  • 1042

强制获取并修改私有变量,强制增加及修改私有方法等

OC是运行时语言,只有在程序运行时,才会去确定对象的类型,并调用类与对象相应的方法。利用runtime机制让我们可以在程序运行时动态修改类、对象中的所有属性、方法,就算是私有方法以及私有属性都是可以动...
  • dingqinghui
  • dingqinghui
  • 2016年07月29日 15:34
  • 436
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:访问私有变量疑问的解决
举报原因:
原因补充:

(最多只允许输入30个字)