在用c++写一个单链表,然后发现我在类内就使用new给成员变量赋值的话会有以下现象
代码如下(不是单链表,是自己随便写了一个进行测试的)
#include<iostream>
using namespace std;
struct node
{
int val;
node* next;
};
class A
{
public:
int a=3;
int* b = new int(5);
node* Node = new node();
A()
{
node* newnode = new node();
Node->val = 100;
Node->next = newnode;
Node->val = 10;
}
};
int main()
{
A a1;
cout << a1.a << endl;
cout << *a1.b << endl;
cout << a1.Node->val << endl;
cout << a1.Node->next->val << endl;
return 0;
}
想要表达的意思是,如果我想给类内的成员变量开辟堆空间的话,必须通过构造函数对其进行初始化,也就是在main函数中定义两个使用堆内存的相同类型的变量然后赋给类内成员变量才行,如果我想直接对类内成员变量使用new开辟堆内存的话在运行的时候就会发现行不通,调试了一下就发现是因为我构造函数里用new开辟的node压根就没有next和val这两个成员。
求解惑,为什么会造成这种情况。