gpt4 book ai didi

C++ 通过指针实例化

转载 作者:太空宇宙 更新时间:2023-11-04 14:44:07 25 4
gpt4 key购买 nike

这是我的代码:

#include <iostream>
using namespace std;
class form{
public:
form(int c ){
code = c;
}
int code;
};
void createForm(form* f,int c){
f = new Form(c);
}
int main(){
form* f1;
form* f2;
createForm(f1,1111);
createForm(f2,2222);
cout<<f1->code<<endl;
cout<<f2->code<<endl;
return 0;
}

结果,我没有看到任何打印出来的东西。我知道实际上并没有创建 f1 和 f2 。所以我想知道我是否可以像这样实例化一个类?如果是,那么如何?

最佳答案

void createForm(form* f,int c){
f = new Form(c);
}

将创建一个对象并将其地址分配给本地f - 这是原件的拷贝 f1f2在该函数的范围内。

原始指针保持不变,所以下面的cout<<语句导致未定义的行为。

您要实现的目标可以通过按引用传递指针来实现:

createForm(form*& f,int c)

您还忘记调用 delete ,所以现在你有内存泄漏。

更好的是 - 根本不使用指针。

关于C++ 通过指针实例化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24450166/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com