我们可以通过类指针显式调用析构函数,为什么不构造函数呢?任何想法?

#include <iostream>

class Con {
public:
    Con( int x ) : x( x ) {

    }

private:
    int x;
};

int main() {
    Con* c = new Con( 1 );
    //c->Con( 2 ); //illegal
    c->~Con(); // ok!
    delete c;
}

谢谢,

最佳答案

你不能。

Con* c = new Con( 1 );
//c->Con( 2 ); //illegal

您已经在new表达式中调用了构造函数。

到拥有Con*类型的有效指针时,您已经创建了一个对象。在“constructed”对象上调用constructor甚至没有任何意义。那么,为什么C++允许这样做?

关于c++ - 有没有一种方法可以使用类实例指针来调用构造函数?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5806305/

10-13 09:22