结构体a
的元素为int b
和指向结构体的指针。程序在没有打印结果的情况下崩溃。
struct a{
int b{5};
a* next=new a;
a(){
next->b=3;
}
};
int main(){
a a1;
cout<<a1.b<<endl;
cout<<(*(a1.next)).b<<endl;
return 0;
}
我预计输出为:
5
3
a* next=new a;
您的a
结构有一个名为next
的成员,该成员默认由new
初始化。程序创建的每个a
实例都将有一个名为next
的类成员,该类成员由new
初始化。这就是类和默认类成员初始值设定项的工作方式。
正如我所说,这个成员是另一个结构a
。当然,它还有一个名为next
的成员,它将由new
初始化。当然,就像结构体a
的每个实例一样。
第二个struct a
也将有一个next
成员,就像所有a
一样,它将由new
初始化。a
的第三个实例将有自己的next
,它将由new
初始化。
等等,直到你的计算机内存耗尽,创建一个结构a
s的无限链。
目前还不清楚你在这里的意图,但这回答了为什么你的程序崩溃的问题。