以前学过VC,最近刚刚开始学VB。对于VB中NEW语句的功能不是很理解,今天又看了一些资料,把自己的理解(猜测)写在下面,请高手看看这样理解对不对:
在VC中,如果定义了一个类,在某个函数中使用该类的一个实例,可以简单地采用如下的方式:
class A
{...};
fun()
{
A sample;
...
}
如果A包含缺省构造函数,其中的A sample;将自动调用该函数形成A的一个实例。
但如果在VB中,使用类似的方式:
private sub fun()
Dim sample As A
end sub
只是相当于声明了一个类似C++中指针的东西,如果要使用,还需要对该指针“分配内存”:sample = New A();
因此,VB中过程体:
private sub fun()
Dim sample As New A
end sub
相当于如下的C++语句:
fun()
{
A *sample = NULL;
sample = new A();
}
同时,VB中的如下过程:
private sub fun()
Dim a As Integer
Dim b As New Integer
end sub
相当于C++中如下语句:
fun()
{
int a;
int *b;
b = new int(0);
}
请问这种理解对不对。如果正确,那么能否用VB中直接实现类似C++中
A sample;
的功能呢?是不是就不支持?
在VC中,如果定义了一个类,在某个函数中使用该类的一个实例,可以简单地采用如下的方式:
class A
{...};
fun()
{
A sample;
...
}
如果A包含缺省构造函数,其中的A sample;将自动调用该函数形成A的一个实例。
但如果在VB中,使用类似的方式:
private sub fun()
Dim sample As A
end sub
只是相当于声明了一个类似C++中指针的东西,如果要使用,还需要对该指针“分配内存”:sample = New A();
因此,VB中过程体:
private sub fun()
Dim sample As New A
end sub
相当于如下的C++语句:
fun()
{
A *sample = NULL;
sample = new A();
}
同时,VB中的如下过程:
private sub fun()
Dim a As Integer
Dim b As New Integer
end sub
相当于C++中如下语句:
fun()
{
int a;
int *b;
b = new int(0);
}
请问这种理解对不对。如果正确,那么能否用VB中直接实现类似C++中
A sample;
的功能呢?是不是就不支持?
vb所有的对象定义时实际都是引用(指针),
所以没有直接的A a,只有 A* a = new A
晕~