#include<iostream>
using namespace std;
class A
{
private:
int value;
public:
A(int init):value(init){}
void changevalue(A &a){a.value = 100;}//why a's value can be changed?
void printvalue(){cout << value << endl;}
};
int main(int argc , char *argv[])
{
A a(2);
A b(3);
a.changevalue(b);
b.printvalue();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
a是A类的实例,其私有值名为value,但为什么可以更改此私有值?那个参数列表是否包含在类的范围内?
private 并不意味着"私人对象身份",而是"私人对象(和朋友)".
请注意,可访问性和能够写入类型是正交概念.您始终可以在自己类型的对象中访问私有值,但是否可以写入它取决于对象是否声明为const:
void f(A& a){ a.value = 4; } // OK: 'a' is not 'const'
void g(A const& a){ a.value = 4 } // error: 'a' is marked as ' const'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
418 次 |
| 最近记录: |