类为什么能这样访问其成员???

cdwy411 2003-08-12 10:22:35
如题:
C++数据结构书上有这样的一段程序:
String::String(const String &ob)
{
....
.......
curlen=ob.curlen;
.......

}
其中int curlen是类对象String 的private 成员。我不太明白为什么在构造函数里
ob对象能够直接访问其private成员curlen,当然在非构造函数里这样又不可呢?
有那位能帮忙解释一下?
谢谢!!!!!

...全文
22 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
积木 2003-08-12
  • 打赏
  • 举报
回复
同类型的对象可以访问对方的private成员
这是因为访问限制是在类/类型级别上(类的所有实例)的
而不是在对象级别上(类的某个特定实例)
ejiue 2003-08-12
  • 打赏
  • 举报
回复
想一下多个类变量只有一个函数副本。
那么:
“类对象的私有成员可以被自己的成员函数所访问。当然也可以被从同一个类实例化的对象所访问”
就更加容易理解了。
我也是恍然大悟,呵呵。

jack_wq 2003-08-12
  • 打赏
  • 举报
回复
原因是类的封装!
jack_wq 2003-08-12
  • 打赏
  • 举报
回复
成员函数当然可以访问自己的成员了!
ejiue 2003-08-12
  • 打赏
  • 举报
回复
非构造函数里,也可以这样访问。

为什么这样我想有两个原因:
1、效率。写成引用就是为了效率,如果还进行函数调用......
2、安全性的带来的问题不大。只在本类里访问一个本类变量时允许。
fireseed 2003-08-12
  • 打赏
  • 举报
回复
不是构造也可以啊,类对象的私有成员可以被自己的成员函数所访问。当然也可以被从同一个类实例化的对象所访问。
ejiue 2003-08-12
  • 打赏
  • 举报
回复
为什么c++把访问限制定义在类级别上呢?
我觉得是效率和安全的折衷。而不是理所当然的就允许访问。

请看楼主的这个函数:
String::String(const String &ob)
{
curlen=ob.curlen;
}
为什么要const String &ob?
难道没有一点不安全感吗?







RedSunRS 2003-08-12
  • 打赏
  • 举报
回复
goodboy1881(三井),讲得很有道理。
模板(template)是类的样板,类是它所有实例化对象的样板。
class A
{
public;
A Test();
private:
int m_nTest;
}

A A::Test()
{
test temp;//在它自身的函数中声明一个自已的实例。
temp.m_nTest = m_nTest +200;//有权访问自已类型,因所有实例类型是
//由这个类实例化的。
return temp;
}

64,637

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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