| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 582 人关注过本帖
标题:麻烦大家帮我看下这个程序怎么改
只看楼主 加入收藏
shiyuehai
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:96
专家分:116
注 册:2009-9-4
结帖率:87.5%
收藏
已结贴  问题点数:20 回复次数:4 
麻烦大家帮我看下这个程序怎么改
#include<iostream>
#include<string>
using namespace std;
class Person
{
public:
    Person(char* n,int age,char *sex)
    {
      strcpy(N,n);Age=age;strcpy(Sex,sex);
    }
    ~Person(){}
    char *Getname(){return N;}
    int GetAge(){return Age;}
    char *GetSex(){return Sex;}
private:
    char *N;
    int Age;
    char *Sex;
};
class Student:public Person
{
public:
    Student(char *n,int age,char *sex,double score): Person(n, age, sex),Score(score)
    {}//Score=score;}
    ~Student(){}
    float GetScore(){return Score;}
private:
    double Score;
};
void main()
{
    Student y("zhangsan",58,"男",92.1);
    cout<<"Student的姓名为:"<<y.Getname()<<"年龄为:"<<y.GetAge()<<"性别为:"<<y.GetSex()<<"分数为:"<<y.GetScore()<<endl;
}
编译没错误,运行的时候就出现错误了!!
刚学c++的继承与派生,结果同学说要我帮他改,我看了就觉得是构造函数里面指针可能错了,不过不知道怎么改,也不知道对不对,大家帮下忙,谢谢
搜索更多相关主题的帖子: 麻烦 
2009-11-13 22:48
qlc00
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:2
帖 子:157
专家分:540
注 册:2007-11-26
收藏
得分:10 
#include<iostream>
#include<string>
using namespace std;
class Person
{
public:
    Person(char* n,int age,char* sex)
    {
      N=new char[strlen(n)+1];
      strcpy(N,n);
      Age=age;
      Sex=new char[strlen(sex)+1];
      strcpy(Sex,sex);
    }
    ~Person(){}
    const char *Getname(){return N;}
    const int GetAge(){return Age;}
    const char *GetSex(){return Sex;}
private:
    char *N;
    int Age;
    char *Sex;
};
class Student:public Person
{
public:
    Student(char *n,int age,char *sex,double score): Person(n, age, sex),Score(score)
    {}//Score=score;}
    ~Student(){}
    float GetScore(){return Score;}
private:
    double Score;
};
void main()
{
     Student y("zhangsan",58,"男",92.1);
    cout<<"Student的姓名为:"<<y.Getname()<<"年龄为:"<<y.GetAge()<<"性别为:"<<y.GetSex()<<"分数为:"<<y.GetScore()<<endl;
}

Anything is possible!
2009-11-13 23:28
wghost
Rank: 2
等 级:论坛游民
帖 子:47
专家分:31
注 册:2009-6-6
收藏
得分:0 
我对指针不太懂,请问二楼为什么这样写啊?
2009-11-14 10:26
qlc00
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:2
帖 子:157
专家分:540
注 册:2007-11-26
收藏
得分:0 
N=new char[strlen(n)+1];
      strcpy(N,n);
这句话的意思就是把指针n指向的值复制给N,相当于赋值!而且指针还可以指向一个字符串数组。N=new char[strlen(n)+1];这句就是给N分配strlen(n)+1这么大的空间!

[ 本帖最后由 qlc00 于 2009-11-14 16:27 编辑 ]

Anything is possible!
2009-11-14 13:40
一旋无风
Rank: 2
等 级:论坛游民
帖 子:55
专家分:92
注 册:2009-11-11
收藏
得分:10 
Person(char* n,int age,char *sex)
    {N=new char[strlen(n)+1];
    Sex=new char[strlen(sex)+1];
      strcpy(N,n);Age=age;strcpy(Sex,sex);
    }
    ~Person(){delete[]N,Sex}
改这些就够了
2009-11-14 14:20
快速回复:麻烦大家帮我看下这个程序怎么改
数据加载中...
 
   



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

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