对象初始化为0

时间:2013-07-25 13:01:14

标签: class object instance

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

例如:

Class Vehicle
{
}

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

3 个答案:

答案 0 :(得分:1)

假设这是C ++,此代码将生成编译错误,原因至少有四个:

  1. 与K& R C不同,C ++不支持具有隐式返回值的函数。 main函数始终返回int,并且必须明确声明为此类。

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

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

  4. Vehicle类没有定义接受整数的构造函数(或者可以从int隐式转换的任何内容),因此您无法使用{{{{}}初始化新的Vehicle对象1}}。

答案 1 :(得分:0)

除非你在Vehicle中有一个构造函数接受一个数字参数,否则你会得到编译器错误,因为

Vehicle v = 0;

相同
Vehicle v(0);

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

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

答案 2 :(得分:0)

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

class Vehicle
{
};

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

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

的情况

也许您正在考虑指向 Vehicle* vp = 0;

的指针
0

哪个会将内存地址NULL(在C ++ 11中更好地表示为nullptr或{{1}})分配给指针变量。