Class 使用0进行对象初始化
我想知道,如果我用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类未定
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;