在C++中,为什么我可以在<double>类中调用 vector::begin() 来获取私有内容?
In C++, why can I call vector<double>::begin() in for a private content in a class?
#include<iostream>
#include<vector>
#include<string>
using namespace std;
class AAA {
private:
vector<double> v;
public:
AAA(int n);
void AAAprint();
void testfn(AAA &aaa);
};
AAA::AAA(int n){
v=vector<double>(n,0);
}
void AAA::AAAprint(){
for (int i=0;(unsigned int) i<v.size();i++)
{
std::cout<<v[i]<<" ";
}
std::cout<<std::endl;
}
void AAA::testfn(AAA &aaa)
{
aaa.v[0]=5;
}
int main(){
AAA aaa(25);
aaa.AAAprint();
AAA bbb(25);
bbb.testfn(aaa);
aaa.AAAprint();
}
在main中首先构造aaa,然后打印出它的值。呼叫bbb.testfn(aaa)
后,下一步更改aaa
。在void AAA::testfn()
中,我可以直接访问aaa.v
, aaa.v[0]
的值确实在void AAA::testfn()
之外发生了变化。因为我在main函数的末尾打印了aaa.v,所以它显示了。这是什么原因呢?
隐私是类限制而不是实例限制。类的所有实例对所有其他实例的私有成员具有完全访问权。
相关文章:
- C++为构建时间获取QDateTime的可靠方法
- 来自 std::list 的迭代器 .end() 按预期返回"0xcdcdcdcdcdcdcdcd"但 .begin()
- lambda参数转换为constexpr技巧,然后获取带链接的数组
- 如何使用 < 和 > 命令获取 c++ 中的输入和输出?
- 使用指针从C++中的数组中获取最大值
- std::map<struct,struct>::find 找不到匹配项,但是如果我循环通过 begin() 到 end(),我在那里看到匹配项
- 如何获取std::result_of函数的返回类型
- 如何在openssl-ecc中获取十六进制格式的私钥
- 使用Unreal C++获取VR耳机的世界位置/方向
- 获取日期异步信号安全吗?如果在信号处理程序中使用,它会导致死锁吗
- 从C字符串中获取奇怪的字符串长度
- 为什么我的for循环不能正确获取argv
- 调用'begin(int [n])'没有匹配函数
- 从python中调用C++函数并获取返回值
- 如何获取一个数字的前3位
- 获取字符串的长度并将其分配给数组
- 有没有函数可以在擦除 c++ 中获取 deque.begin() 的 int 值?
- 获取 c 数组上的 begin 返回类型
- 我可以专门使用 std::begin 和 std::end 来获取 equal_range() 的返回值吗?
- 在C++中,为什么我可以在<double>类中调用 vector::begin() 来获取私有内容?