using System;
class Program
{
static void Main()
{
haha haha1;
}
}
class haha
{
int a;
int b;
public haha(int a, int b)
{
this.a = a;
this.b = b;
}
}
我知道如果我想要make实例,我应该编写如下代码:
haha haha1 = new haha(1,2);
但是当我写的时候
haha haha1;
没有编译错误。
haha haha1;
是什么意思?代码不错吗?
答案 0 :(得分:4)
这不是错误的代码。这是一个变量声明。
haha haha1;
简单地声明一个名为haha1的变量,其类型为haha。但是,此变量未分配值。
使用new关键字实例化对象时:
haha1 = new haha();
该变量然后引用创建的对象
答案 1 :(得分:2)
这取决于编程语言,但大多数编程语言选择以下两个选项之一:
1)隐式初始化(C ++)
haha haha1;
与
相同haha haha1 = new haha1();
2)空初始化(C#)
haha haha1;
与
相同haha haha1 = null;
无论发生什么,行为的结果称为“默认值”或“默认初始值设定项”。有关详细信息,请参阅语言文档。
一些注意事项:C和C ++允许变量未初始化,因此在分配变量之前它们没有确定值。 C ++非指针不能为NULL,因此它们总是用某些东西初始化(但其他所有东西,包括指针,都遵循C规则)。