| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2455 人关注过本帖
标题:关于构造函数 动态分配内存问题
只看楼主 加入收藏
教皇
Rank: 1
等 级:新手上路
帖 子:71
专家分:0
注 册:2011-10-6
结帖率:95.65%
收藏
已结贴  问题点数:4 回复次数:7 
关于构造函数 动态分配内存问题
     定义一个学生student的类,包含他的姓名,学号,三门成绩。其中姓名和学号均为char型。而学号需要动态分配空间用new。那么在构造函数中就需要动态开辟内存。
按照我的理解,构造函数的作用仅仅是赋初值的,即我定义一个student p1,那么系统在我定义的构造函数中选择一个合适的构造函数(没有参数的形式)为它赋予初值。
不用说析构函数中要用到delete来释放学号开辟的空间。
    那么,接下来我希望在主函数中为我刚才定义的student p1重新赋值。所以我应该再定义一个setdata函数(类中的普通成员函数,利用p1.setdata为p1的不能直接访问的成员重新赋值),那么我需要用new再次为学号动态开辟内存吗?
    这块内容可能我的理解有所问题,希望各位大神指点!
搜索更多相关主题的帖子: 内存 空间 动态 三门 
2012-04-15 22:44
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:2 
不用。事实上这种设计无需为学号动态申请内存,或者反过来,如果你让学号动态申请内存,应该让姓名也同样是动态申请内存的。

[ 本帖最后由 TonyDeng 于 2012-4-15 22:52 编辑 ]

授人以渔,不授人以鱼。
2012-04-15 22:48
教皇
Rank: 1
等 级:新手上路
帖 子:71
专家分:0
注 册:2011-10-6
收藏
得分:0 
回复 2楼 TonyDeng
麻烦您去看一下我上一个帖子好吗?我怎么都调不出来,不知道有什么问题。我现在问的就是为了解决上一个问题,可能那个代码有点长大家不愿意细看!
2012-04-15 22:53
教皇
Rank: 1
等 级:新手上路
帖 子:71
专家分:0
注 册:2011-10-6
收藏
得分:0 
回复 2楼 TonyDeng
习题就是这么要求的,主要是想搞清楚这个动态分配和析构 构造函数的关系。
2012-04-15 22:58
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
我没仔细看你那个代码,当时你自己又不说具体是什么问题,现在这个才是具体的。首先你得整理好自己的思路,这里每一个类实例(即对象)是一个学生还是一张学生链表,这是决定性的设计,影响后面的行为。其次,如果每个类对象仅仅是一个学生,那么在构造函数中申请得到的内存入口指针就应该是一经获得就保持不变(把它当全局变量看待,只不过是在类对象体内全局),最后析构时释放,这样指针的生存期从申请开始到释放,当然中途你可以把它释放掉再重新申请(相当于对全局变量重新赋值),如果没有释放的动作,是不需要再申请的。因此,现在你所说的是否需要再申请,显然是你不清晰自己设计的类是用于单个学生还是学生链表,对后者,是要随着学生数目的增长不断申请内存的。

再强调一遍:这取决于你的整个设计思路,是类内用结构体构造储存、使用一张完整的学生链表,抑或是在外部用多个对象实例作元素构造一张链表,必须搞清楚!

[ 本帖最后由 TonyDeng 于 2012-4-15 23:25 编辑 ]

授人以渔,不授人以鱼。
2012-04-15 23:22
hellovfp
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:禁止访问
威 望:30
帖 子:2976
专家分:7697
注 册:2009-7-21
收藏
得分:2 
楼主并没有用链表,只不过从代码中看到他还有很多的地方没有理解。

我们都在路上。。。。。
2012-04-16 11:50
ab1034982749
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
帖 子:215
专家分:1185
注 册:2012-4-14
收藏
得分:0 
这个不需要了。
2012-04-16 12:25
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
以下是引用hellovfp在2012-4-16 11:50:30的发言:

楼主并没有用链表,只不过从代码中看到他还有很多的地方没有理解。

楼主早先问的是下面的帖子,就是链表,这个是从那个延伸出来的:
https://bbs.bccn.net/thread-365285-1-1.html

授人以渔,不授人以鱼。
2012-04-16 12:47
快速回复:关于构造函数 动态分配内存问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.021611 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved