迷惑!!!!!请教一个问题??请指教!!

wang5632968 2005-12-02 09:02:19
这是一个拷贝构造函数的定义:(x,y为私有成员)
ponit::point(point &p)
{x=p.x;
y=p.y;
}
不是说不能通过对象名引用私有成员吗 这里怎么可以这样引用啊啊
...全文
74 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
yangl79 2005-12-03
  • 打赏
  • 举报
回复
我这样给你说吧,你的那个函数:
ponit::point(point &p)
{x=p.x;
y=p.y;
}

其实是这样,你知道吧:
ponit::point(point &p)
{this->x=p.x;
this->y=p.y;
}

你看this指针和p的类型是一样的,只不过一个是指针,一个是实例,但他们对成员函数和成员变量的访问权限是完全一样,这样你应该理解了吧?
wang5632968 2005-12-02
  • 打赏
  • 举报
回复
参数类型和自己一样 是什么意思啊
yangl79 2005-12-02
  • 打赏
  • 举报
回复
参数类型和自己一样,private、protected就不管用了,因为自己已经知道了自己的成员列表,再限制就没有意思了。把上面的函数改为
void fun(point &p);

void fun::point(point &p)
{x=p.x;
y=p.y;
}

效果也一样。
monstersky 2005-12-02
  • 打赏
  • 举报
回复
第一,一般来说拷贝构造函数最好用ClassName(const ClassName & ref),以保证不会影响参数。
第二,就算是私有成员变量也没有问题,都是point类嘛。不信你试试,只要是类内的函数都可以这样访问的。
wang5632968 2005-12-02
  • 打赏
  • 举报
回复
大家帮帮忙啊
wang5632968 2005-12-02
  • 打赏
  • 举报
回复
着不是拷贝构造函数是什么啊???你看源程序啊
class point
{private:
int x,y;
public:
point(int xx=0,int yy=0){x=xx;y=yy;}
point(point &p);
int get_x() {return x;}
int get_y() {return y;}
};
point::point(point &p)
{x=p.x;
y=p.y;
}
请问怎么可以这样调用啊???x,y是私有成员啊 怎么能通过对象名调用啊p.x p.y
Pipi0714 2005-12-02
  • 打赏
  • 举报
回复
这不是拷贝构造函数,看看关于这方面的内容。

16,551

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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