用C++创建一个对象

Moe*_*oeb -1 c++ new-operator

是不是

 A a = new A();   // A is a class name
Run Code Online (Sandbox Code Playgroud)

应该在C++中工作?

我正进入(状态:

请求从'A*'转换为非标量类型'A'

这行代码有什么问题?


这适用于Java,对吗?

另外,A在C++中创建类型的新对象的正确方法是什么呢?

小智 10

不,不是.新操作返回指向新创建的对象的指针,因此您需要:

A * a = new A();
Run Code Online (Sandbox Code Playgroud)

您还需要在代码中的其他位置管理对象的删除:

delete a;
Run Code Online (Sandbox Code Playgroud)

但是,与Java不同,通常不需要在C++中动态创建对象,并且只要有可能,您应该避免这样做.而不是上述,你可以简单地说:

A a;
Run Code Online (Sandbox Code Playgroud)

并且编译器将为您管理对象生存期.

这是非常基本的东西.您使用哪种C++教科书并不涵盖它?

  • @cambr除了琐碎的语法相似之外,Java和C++几乎没有任何共同之处.您的Java经验在学习C++时没有多大用处,这就是您需要阅读一本好书的原因 - 请参阅http://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-名单 (5认同)