none
对象问题 RRS feed

  • 问题

  • 实例化一个对象之后 为什么这个对象不能访问类的private成员? 这个对象不是包含了这个类的这些成员了吗?
    把原理说说看?  

    是不是因为对象不能访问私有成员 所以搞一个this指针出来作为这个问题的解决方案?

    this指针在函数里面出现是不是指当前函数? 如果在类里面就指当前类? 是不是这样
    法拉利 法拉利 法拉利
    2009年6月29日 2:52

答案

  • 楼主太冲动了,冷静下来,不要这么冲动,呵呵
    我引用MSDN上的说明来说明一下:
    首先:private是C++标准的关键字。
    其次:private的用法如下:
    private @import url(MS-ITS:dsmsdn.chm::/html/msdn_ie4.css);

    private: [member-list ]  —— 这里的意思是申明成员变量或者成员函数不可用被外界访问,体现出C++的封装性。当然是可以被成员函数和友元类访问的。

    private base-class  —— 这里的意思是指private继承,要区别私有继承、保护继承和公有继承,还得麻烦楼主去看看C++的基本的书,很多地方有说的,默如果继承的时候,你不写private、protected、public关键字,C++标准会默认为private。

    另外楼主好像有点误解,this指针的意思了,this指针主要是类的非静态成员函数和成员变量的参数。在C++标准中this指针也是一个关键字

     


    • 已标记为答案 Tim Li 2009年7月6日 10:36
    2009年7月3日 7:08

全部回复

  • 没有为什么,这个是私有函数的定义,和this无关。
    this是类的非静态成员函数的隐藏参数。

    Please mark the post answered your question as the answer, and mark other helpful posts as helpful. This posting is provided "AS IS" with no warranties, and confers no rights.
    Visual C++ MVP
    2009年6月29日 3:50
    版主
  • 没有为什么,这个是私有函数的定义,和this无关。
    this是类的非静态成员函数的隐藏参数。

    Please mark the post answered your question as the answer, and mark other helpful posts as helpful. This posting is provided "AS IS" with no warranties, and confers no rights.
    Visual C++ MVP

    下次希望您不要回答我的问题了 等另外那个版主给我回答吧!!!拜托了
    法拉利 法拉利 法拉利
    2009年6月29日 7:28
  • 论坛不是你的。
    不喜欢C++语言规范的话,可以换一个语言。

    Please mark the post answered your question as the answer, and mark other helpful posts as helpful. This posting is provided "AS IS" with no warranties, and confers no rights.
    Visual C++ MVP
    2009年6月29日 8:34
    版主
  • 论坛不是你的。
    不喜欢C++语言规范的话,可以换一个语言。

    Please mark the post answered your question as the answer, and mark other helpful posts as helpful. This posting is provided "AS IS" with no warranties, and confers no rights.
    Visual C++ MVP

       对 !!论坛不是我的 但是论坛也不是你的 我虚心求学 虚心求答!!但是你却忽悠我的问题 你不会C++就等别人帮我回答!! 我超喜欢VC++ 我也超喜欢VC++的语言规范!!! 我是初学者 刚开始学 学到不懂上来问 哪里错了? 难道你是天才你一出生不用学就精通C++了? 如果是这样的话 请你尊重别人 不要鄙视别人 别人刚学 所以很多不懂!! 
    法拉利 法拉利 法拉利
    2009年6月29日 10:51
  • 我不在乎你是否认为你被忽悠,我在乎的是其他有同样问题的人是否能够明确C++语言规范中私有函数和this的关系。
    定义没有什么道理好讲,是用来推出其他衍生结论的基础。你可以推翻定义自己建立一套语言,和数学上推翻公理一样。

    Please mark the post answered your question as the answer, and mark other helpful posts as helpful. This posting is provided "AS IS" with no warranties, and confers no rights.
    Visual C++ MVP
    2009年6月29日 13:17
    版主
  • 大家来这里都是为了互相学习,结交朋友。不要为了小问题而争吵。蒋老师有着丰富的经验和知识。法拉利贵族也是C++的狂热者。大家应该共同努力才对。呵呵:)
    麻烦把正确答案设为解答。
    2009年6月29日 13:57
    版主
  • hi 楼主,private的成员在外部是不能访问的,这是所有面向对象语言的共识。同时也代表着封装性。
    我想可以用两顶帽子的理论来解释,即类的开发者(即类的创造者)和类的使用者(通常称客户程序)。
    而private是类的创造者来用的,他不希望这些被标记为private的成员被类的使用者访问。
    例如我们实现一个宠物类,有个公开的方法Bark();这个方法是public的,但实现宠物猫和宠物狗的Bark();不一样(猫和狗的叫声不一样)。
    您可能会将方法重构为一个单独的方法比如SpecialBark();这个方法是private的。Bark()会调用SpecialBark();这样类的使用者就不会访问到Bark()以外的方法,从而保证了封装性。
    this也是由类的创造者来使用的。开发的时候用两顶不同的帽子互换角色。相信有所帮助!
    一个小建议:不管您看到什么样的回复,至少代表有人关心您的问题,回复即美德,对问题讨论不针对人。我也很能明白一个着急时很容易生气,我自己也一样。
    支持SplendourG版主的观点。学习开发的同时也在学习做人,共同努力:)
    2009年7月3日 5:21
  • 楼主太冲动了,冷静下来,不要这么冲动,呵呵
    我引用MSDN上的说明来说明一下:
    首先:private是C++标准的关键字。
    其次:private的用法如下:
    private @import url(MS-ITS:dsmsdn.chm::/html/msdn_ie4.css);

    private: [member-list ]  —— 这里的意思是申明成员变量或者成员函数不可用被外界访问,体现出C++的封装性。当然是可以被成员函数和友元类访问的。

    private base-class  —— 这里的意思是指private继承,要区别私有继承、保护继承和公有继承,还得麻烦楼主去看看C++的基本的书,很多地方有说的,默如果继承的时候,你不写private、protected、public关键字,C++标准会默认为private。

    另外楼主好像有点误解,this指针的意思了,this指针主要是类的非静态成员函数和成员变量的参数。在C++标准中this指针也是一个关键字

     


    • 已标记为答案 Tim Li 2009年7月6日 10:36
    2009年7月3日 7:08