Class 使用0进行对象初始化

Class 使用0进行对象初始化,class,object,instance,Class,Object,Instance,我想知道,如果我用0初始化一个对象会发生什么 例如: Class Vehicle { } main() { Vehicle v =0; // or Vehicle v; v=0; } 假设这是C++,此代码将产生编译错误,原因有四: 不同于K&R C,C++不支持隐式返回值函数。main函数始终返回int,并且必须明确声明 class关键字未大写,且语言区分大小写。这可能只是一个输入错误,但编译器不会在意 车辆类别的声明无效。类声明必须以分号结尾(在右大括号}之后) Vehicle类未定

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

例如:

Class Vehicle
{
}

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

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

不同于K&R C,C++不支持隐式返回值函数。

main
函数始终返回
int
,并且必须明确声明

  • class
    关键字未大写,且语言区分大小写。这可能只是一个输入错误,但编译器不会在意

  • 车辆
    类别的声明无效。类声明必须以分号结尾(在右大括号
    }
    之后)

  • Vehicle
    类未定义接受整数(或从
    int
    隐式转换的任何内容)的构造函数,因此不能使用
    0
    初始化新的
    Vehicle
    对象


  • 除非您在车辆中有一个构造函数接受一个数值参数,否则您将得到一个编译器错误,因为

    Vehicle v = 0;
    

    Vehicle v(0);
    
    在第二种情况下,需要定义赋值运算符


    一般来说,我建议在提问之前尝试编译。< /P> < P>假设你的语言是C++(并修正为匹配)

    您将无法将0分配给堆栈分配的对象实例,因为在
    v=0的情况下,
    Vehicle
    s和
    int
    s之间不存在重载赋值运算符,或者在
    Vehicle v=0的情况下不存在合适的构造函数

    也许您在想一个指向
    车辆的指针

     Vehicle* vp = 0;
    

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

    什么是语言?这是什么语言?它的C风格括号,但超过……同意,这不是C或C++。你到底想知道什么?@CodyGray不,我是说第二个。线路<代码>车辆v
    定义变量并构造它(即初始化),行
    v=0因此是一个赋值,需要一个合适的赋值运算符。哦,哎呀,我假设“第二个案例”指的是您的第二行代码。完全忘记了问题中的两个例子。
    
     Vehicle* vp = 0;