【发布时间】:2013-12-05 12:42:23
【问题描述】:
class-name object-name = new constructor-name() 抛出错误(代码第 16 行) 由此我可以推断 new 返回一个指针,我的结论是否正确?另外,如果 new 对此不起作用,这是否意味着对象 someObject 是在堆栈上分配而不是在堆上分配的?如果我想在堆上创建一个对象怎么办?
#include<iostream>
using namespace std;
class someClass
{
public:
int x;
someClass()
{
x=6;
}
};
int main()
{
someClass someObject;
someClass *pointerObject;
someObject = new someClass(); //This line throws error
pointerObject = new someClass();
cout<<someObject.x<<endl<<pointerObject->x;
return 0;
}
p.s:我知道这个问题含糊不清,但我无法用更好的词来表达,对于给您带来的不便,我深表歉意。
【问题讨论】:
-
这段代码没有编译,应该是
someClass* someObject; -
someObject已经是一个对象。这不是 Java 或 C#。 -
在 Java 或 C# 中,您使用 new 创建对象。在 C++ 中你很少这样做,通常你只通过声明它们来创建对象。
someClass someObject;创建一个对象,不需要new。 -
该行本身并不是“抛出错误”。这在 C++ 中具有非常具体的技术意义。相反,它会导致编译器错误,因为它不是合法的 C++ 代码。
标签: c++ object constructor new-operator heap-memory