例如,
Number operator+(Number a, Number b) {
return Number(a.x + b.x);
}
Run Code Online (Sandbox Code Playgroud)
这会导致某种"无法访问私有成员错误".据我所知,如果我没有通过引用传递,则数字a和数字b将被复制到堆栈中并在函数体中使用.但是,我不明白为什么他们不允许访问原件的私人会员.我怎么误解对象的概念?为什么朋友和会员功能不需要通过引用传递?
operator+是一个未绑定的函数,即它不是成员Number,这是规则,它没有隐私访问私有成员.
Number通过值或引用传递对象不会影响规则.访问保护适用于对对象的每次访问Number,即使它是基于堆栈的私有副本.
至少有三种方法:
Number operator+(Number, Number)一位朋友Numberx以便可以访问该变量.+=运算符实现为类的成员,并根据它实现自由运算符:return Number(a) += b;| 归档时间: |
|
| 查看次数: |
121 次 |
| 最近记录: |