为什么会输出这个?

Mingci_cpp 2009-06-27 11:51:27
#include <iostream> 
using namespace std;
class Human
{
public:
Human()
{
cout <<"构造函数进行中……\n";
i=999;
}
private:
int i;
};
int main()
{
Human *p=new Human; //顺便帮忙解释一下这代码什么意思?
return 0;
}


还有,为什么会输出构造函数进行中……,main()里不只是定义一个指针并开辟空间吗?
...全文
28 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
ljt3969636 2009-06-28
  • 打赏
  • 举报
回复
Human()
{
cout <<"构造函数进行中……\n";
i=999;
}
是这个类的构造函数,因为函数名就是类名,又因为没有参数,所以是这个类的默认构造函数.默认构造函数,会在创建这个类的对象时被系统调用:
如:(1)Human h;(2)Human *p=new Human;这两个写法都会调用默认的构造函数即执行Human() 函数体中的类容.关于(2)1楼和11楼已经解释得很清晰了.
WaistCoat17 2009-06-28
  • 打赏
  • 举报
回复
c++的new对象是会调用构造函数
HelloDan 2009-06-28
  • 打赏
  • 举报
回复
new Human实例化并分配空间了。

还有是记得delete
小七aimei 2009-06-28
  • 打赏
  • 举报
回复
关键字new在堆上动态创建一个对象时,它实际上做了三件事:获得一块内存空间、调用构造函数、返回正确的指针。
既然调用了构造函数,肯定会有输出的。

lz可以看下这个http://www.builder.com.cn/2008/0104/696370.shtml
Walf_ghoul 2009-06-28
  • 打赏
  • 举报
回复
new会调用对象的构造函数的。
DarkChampion 2009-06-28
  • 打赏
  • 举报
回复
分配新实例的时候,C++编译器会自动把构造函数加入的
同样释放时会调析构函数
rejoice914 2009-06-28
  • 打赏
  • 举报
回复
#include <iostream> 
using namespace std;
class Human
{
public:
Human()
{
cout <<"构造函数进行中……\n";
i=999;
}
private:
int i;
};
int main()
{
Human *p=new Human; //顺便帮忙解释一下这代码什么意思?LS都讲了,开辟一个内存存放一个对象!
//另外c++ 里面的new delete 自动的调用构造函数和析构函数!

return 0;
}
萧霖 2009-06-28
  • 打赏
  • 举报
回复
基础很重要哦。看书吧。

多看几遍就懂了。
soso20099 2009-06-28
  • 打赏
  • 举报
回复
还不懂
lingyin55 2009-06-28
  • 打赏
  • 举报
回复
Human *p=new Human; //顺便帮忙解释一下这代码什么意思?

表示构造一个对象,这时就会调用Human中的构造函数,所以会输出。
hlovey123 2009-06-28
  • 打赏
  • 举报
回复
你开辟了一块新的内存空间,
输出 "构造函数进行中" 是因为你执行的时候程序调用了构造函数,
还有就是new出来后别忘了delete !
liao05050075 2009-06-27
  • 打赏
  • 举报
回复
Human *p=new Human;

Human *p=new Human();是一样的

规定使用不带参数的构造函数可以省略括号

Human *p=new Human;也就是使用无参构造函数新建出一个新的human对象

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧