我是C++新手。我试图向用户询问他们是要创建一个对象还是创建一个参数化对象(并将参数作为输入)。基于用户输入在运行时创建一个对象
下面的示例程序做我想做的事但我相信这是错误的,因为指针将指向不再为我的程序保留的内存(因为对象obj超出范围)。
#include <iostream>
using namespace std;
class myClass{
int num;
public:
myClass()
{
num=0;
}
myClass(int parameter)
{
num=parameter;
}
~myClass()
{
cout << num << endl; //for checking purposes
}
};
int main()
{
cout << "Use default(1) or parametrized(2) constructor: ";
int choice;
cin >> choice;
myClass *ptr;
if(choice==1)
{
myClass obj;
ptr = &obj;
}
else
{
int para;
cout<< "parameter: ";
cin>>para; //input parameter
myClass obj(para);
ptr = &obj;
}
//use ptr-> from here on out
}
您必须使用'new'动态分配它。甚至更好的使用'std :: unique_ptr'而不是'myClass *'原始指针。 –
@πάνταῥεῖ我还没有研究那独特的ptr的东西。 但是,我会尽力用新的方法来做到这一点。 –
@πάνταῥεῖ是正确的。如果你还没有研究过'std :: unique_ptr',那就去查看它,以及'std :: observer_ptr'。在新代码中使用原始指针是个不错的主意。 – Caleth