我是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