注册 登录
编程论坛 C++教室

麻烦大家帮我看下这个程序怎么改

shiyuehai 发布于 2009-11-13 22:48, 582 次点击
#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++的继承与派生,结果同学说要我帮他改,我看了就觉得是构造函数里面指针可能错了,不过不知道怎么改,也不知道对不对,大家帮下忙,谢谢
4 回复
#2
qlc002009-11-13 23:28
#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;
}
#3
wghost2009-11-14 10:26
我对指针不太懂,请问二楼为什么这样写啊?
#4
qlc002009-11-14 13:40
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 编辑 ]
#5
一旋无风2009-11-14 14:20
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}
改这些就够了
1