问题描述
https://stackoverflow.com/a/8523361/11862989 从这个答案开始,这个问题就出现了。我觉得很小 那个答案有问题,所以我在那里评论了,但他没有回复(我指的是回答的家伙(190K 声誉))所以我在这里问那一小部分。
1.
.h
struct A
{
private:
int &i;
public:
A(int);
};
.cpp
A::A(int k1): i(k1)
{
std::cout<<&k1<<" "<<k1<<"\n";
std::cout<<&i<<" "<<i<<"\n";
}
main.cpp
int main()
{
int x=99;
std::cout<<&x<<" "<<x<<"\n";
A a1(x);
}
0x72fe0c 99
0x72fde8 99
0x72fde8 99
2.
.h
struct A
{
private:
int &i; // __change__
public:
A(int&);
};
.cpp
A::A(int &k1): i(k1) // __change__
{
std::cout<<&k1<<" "<<k1<<"\n";
std::cout<<&i<<" "<<i<<"\n";
}
main.cpp
int main()
{
int x=99;
std::cout<<&x<<" "<<x<<"\n";
A a1(x);
}
0x72fe0c 99
0x72fe0c 99
0x72fe0c 99
在 2nd 代码中,因为我们通过 main 传递 x
的引用,它由 k1
收集。现在我们将 k1
的引用传递给 i
。表示现在 i
指的是 k1
,而 k1
指的是 x
。表示间接 i
指的是 x
我对吗?
在 1st 我认为这里变量 x
的值通过 main 传递,并由变量 k1
收集,然后将 k1
的引用传递给变量 i
。所以在这种情况下变量 i
指的是变量 k1
但变量 k
不是指变量 x
我是对的吗?
我在上面提到的那个人(190K 声誉)他使用了第一种方法来做到这一点,我认为他是错误的,__2nd__method 用于初始化类中对象的引用变量是正确的。我说得对吗?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)