C++ C++;在for循环中为结构返回相同的引用 #包括 结构演示 { INTA; int b; }; int main() { 对于(int i=0;i
在第一个循环中创建一个C++ C++;在for循环中为结构返回相同的引用 #包括 结构演示 { INTA; int b; }; int main() { 对于(int i=0;i,c++,C++,在第一个循环中创建一个Demo。当作用域离开时,它将被反构造。在第二个循环中,您将在不同的位置创建一个新的Demo 如果在循环之前创建演示,则将获得两个循环中显示的相同内存地址 #include <iostream> struct Demo { int a; int b; }; int main() { for(int i=0;i < 3; i++) { Demo d; d.a = i; st
Demo
。当作用域离开时,它将被反构造。在第二个循环中,您将在不同的位置创建一个新的Demo
如果在循环之前创建演示
,则将获得两个循环中显示的相同内存地址
#include <iostream>
struct Demo
{
int a;
int b;
};
int main()
{
for(int i=0;i < 3; i++)
{
Demo d;
d.a = i;
std::cout << "Reference of Demo " << &d << std::endl;
}
for(int i=0;i < 3; i++)
{
Demo d = {i};
std::cout << "Reference of Demo " << &d << std::endl;
}
}
#包括
结构演示
{
INTA;
int b;
};
int main()
{
演示d;
对于(int i=0;i<3;i++)
{
d、 a=i;
std::我能理解循环1和循环2返回不同的引用吗?我的问题是在循环中获取相同的引用。循环1返回相同的引用3次,循环2也返回相同的引用3次。类Demo
有两个不同的对象d
。第一个循环中有一个,第二个循环中有一个第二种。因此,它们有不同的引用。允许编译器对生命周期不重叠的对象重复使用地址。编译器不需要这样做。它们都是相同的,或者都是不同的,或者其他一些组合都是同样有效的。
#include <iostream>
struct Demo
{
int a;
int b;
};
int main()
{
Demo d;
for(int i=0;i < 3; i++)
{
d.a = i;
std::cout << "Reference of Demo " << &d << std::endl;
}
for(int i=0;i < 3; i++)
{
std::cout << "Reference of Demo " << &d << std::endl;
}
}