再搭环境是狗 2021-12-15 17:22 采纳率: 0%
浏览 37
已结题

关于c++类内对成员变量进行new初始化这件事

在用c++写一个单链表,然后发现我在类内就使用new给成员变量赋值的话会有以下现象

img

代码如下(不是单链表,是自己随便写了一个进行测试的)


#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这两个成员。
求解惑,为什么会造成这种情况。

  • 写回答

0条回答 默认 最新

    报告相同问题?

    问题事件

    • 系统已结题 12月23日
    • 创建了问题 12月15日