-2

我想知道,如果我用 0 初始化一个对象会发生什么。

例如 :

Class Vehicle
{
}

main()
{
Vehicle v =0;  // or
Vehicle v;
v=0;
}
4

3 回答 3

1

假设这是 C++,这段代码会产生编译错误,至少有四个原因:

  1. 与 K&R C 不同,C++ 不支持具有隐式返回值的函数。该main函数总是返回int,并且必须显式声明为这样。

  2. 关键字不大写,class语言区分大小写。这可能只是一个错字,但编译器不会在意。

  3. 类的声明Vehicle无效。类声明必须以分号结尾(在右大括号之后})。

  4. 该类Vehicle没有定义接受整数(或任何可从 隐式转换int)的构造函数,因此您不能使用 初始化新Vehicle对象0

于 2013-07-25T13:06:13.540 回答
0

除非您在 Vehicle 中有一个带有一个数字参数的构造函数,否则您将收到编译器错误,因为

Vehicle v = 0;

是相同的

Vehicle v(0);

在第二种情况下,您需要定义赋值运算符。

一般来说,我建议在询问之前实际尝试编译。

于 2013-07-25T13:07:43.583 回答
0

假设您的语言是 C++(并更正以匹配)

class Vehicle
{
};

int main()
{
    Vehicle v = 0;  // or
    Vehicle v;
    v = 0;
}

您将无法将 0 分配给堆栈分配的对象实例,因为Vehicles 和ints之间不存在重载赋值运算v = 0Vehicle v = 0;

也许您正在考虑指向 a 的指针Vehicle

 Vehicle* vp = 0;

这会将内存地址0(更好地表示为C++11NULLnullptr在 C++11 中)分配给指针变量。

于 2013-07-25T13:10:06.580 回答