代码
#include<iostream>
struct A
{
private:
public:
int &p,q;
A(int &k1,int k2):p(k1),q(k2)
{
}
};
int main()
{
int x=2;
A a1(x,3);
std::cout<<&x<<"\n";
// std::cout<<&k1<<"\n"; commented out this as it gives error
std::cout<<&a1.p<<"\n";
}
输出
0x6ffe1c
0x6ffe1c
p
指的是k1
和k1
指的是x
。
K1
将超出范围权限,因此尝试访问它会出错。但a1.p
实际上指的是k1
so它指的是不存在的内存。那么为什么访问a1.p
不给出错误。