新手 求救 。。c++ 实例化对象问题,代码很短

巨应打字员 2009-10-05 01:45:38
#include <iostream>
using namespace std;
class Human
{
public :
int weight;
};
int main()
{
Human tom;
tom.weight=150;
cout<<"tz:"<<tom.weight;
}


这段代码 Human都没有new怎么也可以用???
我new了反而出错了。 我学c#的,c++新手,请大家帮帮我
...全文
660 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
巨应打字员 2009-10-05
  • 打赏
  • 举报
回复
哦原来这么回事, 没钱买书,看看视频,看看电子书学习。。。
na2650945 2009-10-05
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 zentropy 的回复:]
Human tom;  // 这条语句就已经在栈的内部分配了空间,编译的时候已经确定
new Human的话则是在堆的时候分配,运行时才分配空间
[/Quote]
正解。
如果new的话。
是自己管理内存。
否则由编译器管理。
ziyoufeng_ 2009-10-05
  • 打赏
  • 举报
回复
语法问题,看书吧。
周成风 2009-10-05
  • 打赏
  • 举报
回复
没有new是在栈中分配的内存,由操作系统负责管理的,对象生命周期结束会自动释放该对象占有的内存。

new了就是在堆上分配的,内存需要程序员管理。
taozi1234567 2009-10-05
  • 打赏
  • 举报
回复
new 的话是在堆上分配内存,Human tom是在栈中分配内存,两种方式不一样
pytf 2009-10-05
  • 打赏
  • 举报
回复
Human tom;这是就在栈上分配空间了,
Human *ptom = new Human;这在堆上分配空间了,要自已delete掉;
ccc_cgreen 2009-10-05
  • 打赏
  • 举报
回复
c++中实例化对象,就是分配空间,并调用构造函数而已,
Human tom;
Human* tom = new Human;
这两种方法都是实例化对象,只是他们分配空间的位置不一样而已,
Human tom;分配的空间在函数的栈上,函数返回时自动释放
而Human* tom = new Human;分配的空间在堆上,需要手动delete释放。
arong1234 2009-10-05
  • 打赏
  • 举报
回复
C++定义一个对象就自动实例化,而C#需要new,C#里得对象实际等同于C++得指针
zentropy 2009-10-05
  • 打赏
  • 举报
回复
Human tom; // 这条语句就已经在栈的内部分配了空间,编译的时候已经确定
new Human的话则是在堆的时候分配,运行时才分配空间
  • 打赏
  • 举报
回复
tom就是一个实例对象啊。

64,662

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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