基本上我想要的是:c + +不允許棧實例,但允許新刪除
class MyClass{
public:
MyClass() = default;
// what should I do?
}
MyClass mc; // compile time error;
auto pmc = new MyClass; //OK
delete pmc; //OK too
我知道我可以把它堆只能通過隱藏的構造函數(不能現在新的類外)或隱藏的析構函數(現在不能在課程外部刪除)或隱藏兩者。如果我不想介紹一些新的命名功能,只想要新的舊的刪除功能,該怎麼辦?是否有可能(即使有黑客)?
沒有,只是寫一個函數。 –
請**編輯您的問題**,解釋爲什麼要禁止「MyClass」堆棧自動變量並給出更有動機的示例 –
我希望'new'運算符可以重載,以便它可以返回類,並且可以接受任意數量的參數,就像構造函數一樣,這樣我們就可以編寫像:'auto px = new X(arg0,arg2,arg3);'....和'delete'就像析構函數。 – Nawaz