请教各位网友:问个C++中类的对象的问题:(10分)

  • 主题发起人 主题发起人 netbug
  • 开始时间 开始时间
N

netbug

Unregistered / Unconfirmed
GUEST, unregistred user!
请看:
#include<iostream.h>
class rect
{
public:
int leftx;
int topy;
public:
void draw()
{
cout<<leftx+topy<<endl;
};
};

void main()
{

rect r1;
r1.leftx=2;
r1.topy=22;
r1.draw();
}

在上例中编译能通过并能运行,但在上例中,我在类中并没有
定义构造函数,为何可以通过编译?我记得在Delphi中,一定
要有个构造方法,只有用构造方法才能创建个类的实例--对象。
在C++中如没有构造函数,那系统是如何为对象分配内存的?
是不是说在C++中有默认的构造函数?谢谢。
 
这是什么呀. ^_^
 
对呀,要大家做饭,也得把米准备好啊:-()
 
太乱了!整理整理
 
看不懂!
 
不懂的说。
 
我代贴
<pre>


请看:
#include&amp;lt;iostream.h&amp;gt;
class rect
{
public:
int leftx;
int topy;
public:
void draw()
{
cout&amp;lt;&amp;lt;leftx+topy&amp;lt;&amp;lt;endl;
};
};

void main()
{

rect r1;
r1.leftx=2;
r1.topy=22;
r1.draw();
}

在上例中编译能通过并能运行,但在上例中,我在类中并没有
定义构造函数,为何可以通过编译?我记得在Delphi中,一定
要有个构造方法,只有用构造方法才能创建个类的实例--对象。
在C++中如没有构造函数,那系统是如何为对象分配内存的?
是不是说在C++中有默认的构造函数?谢谢。




</pre>
 
因为如果你没有定义构造函数,C++编译会使用缺省构造函数(即空构造函数)

其实在Delphi中的类,也可以不写构造函数,编译会自动执行父类的构造函数。
 
JohnsonGuo 说得对
 
来蹭点分
不写构造函数实际上是继承自TObject
调有TObject的构造函数.
 
C与DELPHI不同,C同时提供了对象实例和对象指针两种类型。而DELPHI中只有
对象指针(相对与C来说,因为DELPHI把它直接当做实例来使用,实际上用法相当与
对象指针),
在C中象你所写的rect r1;是定义对象实例,会自动调用构造器分配内存(和struct
类型一样)。在调用内部数据结构时用小数点(rect.left)
如果你用rect *r1,则是定义对象指针,必须显式调用构造器分配内存(用new函数)
和析构器释放内存(delete函数)。这和DELPHI中的对象的用法是一致的。DELPHI中的对象
实际上就是对象指针。
 
多人接受答案了。
 
后退
顶部