基本上我想要的是:
class MyClass{
public:
MyClass() = default;
// what should I do?
}
MyClass mc; // compile time error;
auto pmc = new MyClass; //OK
delete pmc; //OK too
我知道可以通过隐藏构造函数(现在不能在类外部使用new)或隐藏析构函数(现在不能在类外部使用delete)或同时隐藏两者,使其只能通过堆进行操作。但如果我不想引入新的命名函数,只想使用老旧的new和delete,有没有可能实现呢?即使通过一些技巧也可以吗?
MyClass
的栈自动变量,并给出一个更有动机的例子。 - Basile Starynkevitchnew
运算符可以以一种可重载的方式进行重载,使其能够返回类的实例,并且可以像构造函数一样接受任意数量的参数,这样我们就可以编写类似于auto px = new X(arg0, arg2, arg3);
的代码了。而delete
则可以像析构函数一样使用。 - Nawaz