括号内的实例被破坏

时间:2018-07-26 08:00:15

标签: c++ destructor

我应该在C ++中使用delete new实例,对吧?

class C {
public:
    void hello() {...};
};

如果我有上述类的实例,则可能不得不使用它

C* c = new C();
c->hello();
delete c;

对吗?怎么样:

(new C())->hell();

我可以这样做吗? destructor是否会自动调用并释放内存?

3 个答案:

答案 0 :(得分:4)

否,因为您从不调用public void onClick(View v) { if(player_turn){ if (((Button) v).getText().toString().equals("")) { ((Button) v).setText("X"); dohandler(computermakemove()); player_turn = !player_turn; } } player_turn = !player_turn; } ,所以不会自动调用析构函数。但是,您可以创建一个智能指针,一次即可为您完成此操作:

delete

答案 1 :(得分:1)

在现代c ++中,不再需要<dependency> <groupId>org.example</groupId> <artifactId>module-a</artifactId> <version>1.0-SNAPSHOT</version> <classifier>tests</classifier> </dependency> 来增加资源。相反,您可以使用new库,如下所示:

memory

在这里,资源已被占用,您不能忘记删除分配给其他地方的内容。

答案 2 :(得分:0)

否,在第二种情况下将不会调用析构函数,而且还会发生内存泄漏。仅当显式调用delete时,才会调用动态分配对象的析构函数。