操作符重载函数默认就是友元函数吗?

yjukh yjukh 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
在对一个操作符进行重载时,没有将它声明成友元,但它还是可以访问私有的成员变量,难道它默认就是友元函数?
我用的是VS2005,这段代码编码和运行都没有问题



class SPoint
{
private:
float data[3];
public:

SPoint():
{
memset(data,0, 3*sizeof(float));
}

SPoint(float x,float y,float z):
{
data[0] = x;
data[1] = y;
data[2] = z;

}
SPoint(const SPoint &pt):
{
memcpy(data,pt.data,3*sizeof(float));

}

void operator =(const SPoint &pt)
{
memcpy(data,pt.data,3*sizeof(float));
}


inline SPoint operator +( const SPoint &p2);//-----没有声明为友元

} ;

SPoint inline SPoint::operator +(const SPoint &p2)
{
SPoint sp;
for(int i=0;i<3;i++)
sp.data[i] = data[i] + p2.data[i];//-------但sp和p2都可以访问data私有变量!
return sp;
}


...全文

相关推荐

评论 12
收藏 已收藏
分享
返回顶部
yjukh
C++ 语言 65,214 成员 250,514 内容