请教一个VC++中访问成员变量的问题?

anewbies 2014-02-27 03:29:33
类的私有成员只能在类本身的方法中访问,在类的方法中要访问的话如:m_private=123;(也就是直接变量名),不用同时也不能去通过实例化一个对象来访问它。我这样理解对不对?
公有成员能被类的所有对象访问,是不是不论在程序的何处必须要先实例化一个对象,然后用这个对象来访问它?
保护成员不能被类的一个实例化对象访问,只能被类的方法访问。
在类的外部,也就是不在这个类的任意一个方法中的其他地方,只能访问该类的公有变量。
我说的这些话都有哪些错误呢????求教
...全文
161 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
anewbies 2014-04-01
  • 打赏
  • 举报
回复
引用 8 楼 wxq714586001 的回复:
每一种情况都编程试试,这样认识更加深刻
有道理!
牧羊人Full 2014-03-02
  • 打赏
  • 举报
回复
每一种情况都编程试试,这样认识更加深刻
hhhh63 2014-03-01
  • 打赏
  • 举报
回复
引用 5 楼 anewbies 的回复:
关于我有问题的表达:请问“不全对,直接写是行”这里的行是什么意思呢? 关于我对的表达:保护成员不能被实例化的对象访问,只能被类的方法访问,在类的方法中的访问形式为:m_private=123;(也就是直接变量名),这样对吗?
对的,就是这样
baichi4141 2014-02-28
  • 打赏
  • 举报
回复
非静态成员变量和成员函数属于一个对象,如果这个对象不存在,你想访问的东西就不存在,不是不能访问,而是根本不存在。比如你想要执行“举手”这个函数,如果连人这个对象都不存在,你想让谁举手?这不是什么规定的问题,这就是概念错误。 在已经有了一个对象的时候,访问它的成员变量和让它执行成员函数在概念上才成立。所以你“通过实例化对象来调用成员函数”的想法就类似于“因为我想让一个东西举手,所以我创造出了一个人”
anewbies 2014-02-28
  • 打赏
  • 举报
回复
直接写是行是什么意思啊?是不是私有变量与方法也只能靠实例化对象来调用啊?
xiaohuh421 2014-02-28
  • 打赏
  • 举报
回复
要注意, 还有子类可以访问protect成员, 友员类,友员函数可以访问私有成员和保护成员. class A { friend class B; friend void fun2(A &a); protected: int a; void fun1(){} private: int b; void fun2(){} }; class B { public: void fun(A &a) { a.a = 0; a.b = 1; a.fun1(); a.fun2(); } }; void fun2(A &a) { a.a = 1; a.b = 2; a.fun1(); a.fun2(); }
anewbies 2014-02-28
  • 打赏
  • 举报
回复
引用 4 楼 baichi4141 的回复:
非静态成员变量和成员函数属于一个对象,如果这个对象不存在,你想访问的东西就不存在,不是不能访问,而是根本不存在。比如你想要执行“举手”这个函数,如果连人这个对象都不存在,你想让谁举手?这不是什么规定的问题,这就是概念错误。 在已经有了一个对象的时候,访问它的成员变量和让它执行成员函数在概念上才成立。所以你“通过实例化对象来调用成员函数”的想法就类似于“因为我想让一个东西举手,所以我创造出了一个人”
私有成员不是不能被类的对象访问吗?
anewbies 2014-02-28
  • 打赏
  • 举报
回复
引用 1 楼 hhhh63 的回复:
[quote=引用 楼主 anewbies 的回复:] 类的私有成员只能在类本身的方法中访问,在类的方法中要访问的话如:m_private=123;(也就是直接变量名),不用同时也不能去通过实例化一个对象来访问它。我这样理解对不对?
不全对,直接写是行,但只有实例化后才能调用该方法。
引用 楼主 anewbies 的回复:
公有成员能被类的所有对象访问,是不是不论在程序的何处必须要先实例化一个对象,然后用这个对象来访问它?保护成员不能被类的一个实例化对象访问,只能被类的方法访问。 在类的外部,也就是不在这个类的任意一个方法中的其他地方,只能访问该类的公有变量。
对[/quote] 关于我有问题的表达:请问“不全对,直接写是行”这里的行是什么意思呢? 关于我对的表达:保护成员不能被实例化的对象访问,只能被类的方法访问,在类的方法中的访问形式为:m_private=123;(也就是直接变量名),这样对吗?
hhhh63 2014-02-27
  • 打赏
  • 举报
回复
引用 楼主 anewbies 的回复:
类的私有成员只能在类本身的方法中访问,在类的方法中要访问的话如:m_private=123;(也就是直接变量名),不用同时也不能去通过实例化一个对象来访问它。我这样理解对不对?
不全对,直接写是行,但只有实例化后才能调用该方法。
引用 楼主 anewbies 的回复:
公有成员能被类的所有对象访问,是不是不论在程序的何处必须要先实例化一个对象,然后用这个对象来访问它?保护成员不能被类的一个实例化对象访问,只能被类的方法访问。 在类的外部,也就是不在这个类的任意一个方法中的其他地方,只能访问该类的公有变量。

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧