基本上我想要的是: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