| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 514 人关注过本帖
标题:程序中的动态空间申请不是很理解,大家帮忙解释下了,万分感谢!
只看楼主 加入收藏
qshzh102
Rank: 2
等 级:论坛游民
帖 子:19
专家分:20
注 册:2010-9-14
结帖率:50%
收藏
已结贴  问题点数:20 回复次数:6 
程序中的动态空间申请不是很理解,大家帮忙解释下了,万分感谢!
程序如下:
#include<iostream.h>
#include<string.h>
class student
{
    char num[10];
    char *name;
    int score;
public:
    student(char *nump,char *namep,int score)   //构造函数
    {
        if(nump)                                //在构造函数中,不需要动态申请num成员的空间
            strcpy(num,nump);
        else
            strcpy(num," ");
        if(namep)                               //在构造函数中,需动态申请name成员的空间
        {
            name=new char[strlen(namep)+1];
            strcpy(name,namep);
        }
        else name=0;
        score=score;
        cout<<"constructor called!\n";
    }
    ~student()                                 //在析构函数中,需释放name成员的空间
    {
        if(name) delete [] name;
        cout<<"destructor called!\n";
    }
    void show()
    {
        cout<<num<<'\t'<<name<<'\t'<<score<<endl;
    }
};
void main()
{
    student a("040120518","george",80);
    a.show();
}


其中,
if(nump)代表的什么意思啊?为什么不需要为num进行动态申请成员空间?
而在if(namep)中却要对name的成员进行动态空间的申请?

目前的理解:是不是因为num是一个字符数组在定义的时候已经对其进行了空间的分配,而name指针只用在使用的额时候才对其进行动态空间的分配,使用结束后立刻收回所分配的空间?

麻烦大家帮忙了
搜索更多相关主题的帖子: 动态 空间 申请 
2010-11-03 10:18
hahayezhe
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:湖南张家界
等 级:贵宾
威 望:24
帖 子:1386
专家分:6999
注 册:2010-3-8
收藏
得分:6 
if(nump)  判断nump == NULL
理解是对的
2010-11-03 10:56
qshzh102
Rank: 2
等 级:论坛游民
帖 子:19
专家分:20
注 册:2010-9-14
收藏
得分:0 
NULL好像是空、没有有效的数据的意思吧
strcpy(num,nump);这条语句执行后num中好像还是空的没有存放数据吧?
应该不是这样子的啊
奇怪 期待各位的继续解答
2010-11-03 11:07
寒风中的细雨
Rank: 17Rank: 17Rank: 17Rank: 17Rank: 17
等 级:贵宾
威 望:66
帖 子:1710
专家分:8645
注 册:2009-9-15
收藏
得分:6 
this->score=score

2010-11-03 12:15
qshzh102
Rank: 2
等 级:论坛游民
帖 子:19
专家分:20
注 册:2010-9-14
收藏
得分:0 
回复 4楼 寒风中的细雨
版主写了个this指针是啥意思啊?和NULL有关系还是说将score=score换成this指针?
2010-11-03 12:31
cacker
该用户已被删除
收藏
得分:6 
提示: 作者被禁止或删除 内容自动屏蔽
2010-11-03 14:13
qshzh102
Rank: 2
等 级:论坛游民
帖 子:19
专家分:20
注 册:2010-9-14
收藏
得分:0 
回复 6楼 cacker
if(nump) 为判断nump是否为置空
那么下面的这一段代码:
student(char *nump,char *namep,int score)
{
    if(nump)
        strcpy(num,nump);
    else
        strcpy(num," ");
}
的意思是不是说:
如果nump为置空的话,将num=nump;如果nump不为置空的话,将会使num指向空格和'\0'了。
如果是那样的话,在main()中定义的对象:student a("040120518","george",80);作何解释啊?怎么将010120518赋给字符数组num了?
2010-11-03 14:45
快速回复:程序中的动态空间申请不是很理解,大家帮忙解释下了,万分感谢!
数据加载中...
 
   



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

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