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

刚学C++帮忙分析一下

梁朝斌 发布于 2013-04-24 21:44, 650 次点击
#include <iostream.h>
#include <string.h>
class person
{
protected:
    char name[20];
    int sex;
    int    age;
public:
    Person(char *na,int ag,int  se)
    {
        strcpy(name, na);
        sex= se;
        age = ag;
    }
    void initname(char *na)
    {
        strcpy(name, na);
    }

    void initsex(int se)
    {
        sex=se;
    }

    void initage(int ag)
    {
        age=ag;
    }

    char * getname()
    {
        return name;
    }

    int getage()
    {
        return age;
    }

    int getsex()
    {
        return sex;
    }

    void printf()
    {
        cout<<"姓名:"<<name<<endl;
        cout<<"性别:"<<sex<<endl;
        cout<<"年龄:"<<age<<endl;
    }
};
class teacher:public person
{
    int post;
    int  salary;
public:
    teacher(char *na,int ag,int se,int po,int sa):person(na,ag,se)
    {
        post=po;
        salary=sa;
    }
    void printf()
    {
        person::printf();
        cout<<"职位:"<<post<<endl;
        cout<<"工资:"<<salary<<endl;
    }
};
class student:public person
{
    char xuehao[20];
    char Class[20];
public:
    student(char *na,int ag,int se,char *xh,char *cl):person(na,ag,se)
    {
        strcoy(xuehao,xh);
        strcpy(Class,cl);
    }
    printf()
    {
        person::printf();
        cout<<"学号:"<<xuehao<<endl;
        cout<<"班级:"<<Class<<endl;
    }
};
void main()
{
    teacher te("liang",22,男,教授,5000);
    student st("liang",22,男,"20112111225","11B");
    te.printf();
    cout<<"__________________"<<endl;
    st.printf();
}
        

4 回复
#2
邓士林2013-04-24 22:03
teacher(char *na,int ag,int se,int po,int sa);你看看你的函数参数是多么的不对应; student(char *na,int ag,int se,char *xh,char *cl);参数都不对应;还有你的Person的大小写有的都错了,我给你修改下:
#include <iostream.h>
#include <string.h>
class Person
{
protected:
    char name[20];
    char sex;
    int  age;
public:
    Person(char *na,int ag,char  se)
    {
        strcpy(name, na);
        sex= se;
        age = ag;
    }
    void initname(char *na)
    {
        strcpy(name, na);
    }

    void initsex(char se)
    {
        sex=se;
    }

    void initage(int ag)
    {
        age=ag;
    }

    char * getname()
    {
        return name;
    }

    int getage()
    {
        return age;
    }

    char getsex()
    {
        return sex;
    }

    void printf()
    {
        cout<<"姓名:"<<name<<endl;
        cout<<"性别:"<<sex<<endl;
        cout<<"年龄:"<<age<<endl;
    }
};
class teacher:public Person
{
    char *post;
    int  salary;
public:
    teacher(char *na,int ag,char se,char *po,int sa):Person(na,ag,se)
    {
        post=po;
        salary=sa;
    }
    void printf()
    {
        Person::printf();
        cout<<"职位:"<<post<<endl;
        cout<<"工资:"<<salary<<endl;
    }
};
class student:public Person
{
    char xuehao[20];
    char Class[20];
public:
    student(char *na,int ag,char se,char *xh,char *cl):Person(na,ag,se)
    {
        strcpy(xuehao,xh);
        strcpy(Class,cl);
    }
    printf()
    {
        Person::printf();
        cout<<"学号:"<<xuehao<<endl;
        cout<<"班级:"<<Class<<endl;
    }
};
void main()
{
    teacher te("liang",22,'m',"教授",5000);
    student st("liang",22,'m',"20112111225","11B");
    te.printf();
    cout<<"__________________"<<endl;
    st.printf();
}
        



[ 本帖最后由 邓士林 于 2013-4-24 22:29 编辑 ]
#3
bme_zxl2013-05-02 18:13
1.类的构造函数就是直接把类名拷贝过来就可以了(为了减少像大小写这些错误)
2.为了能让看到输出结果,我一般使用,_getch(),函数,(包含在头文件<conio.h>)
3.注意性别男是字符,显示结果,我用数字0与1分别表示男女了

#include <iostream>
#include <string.h>
#include <conio.h>
using namespace std;
class person
{
protected:
    char name[20];
    int  sex;
    int  age;
public:
 person(char *na,int ag,int  se)
    {
        strcpy(name, na);
        sex= se;
        age = ag;
    }
    void initname(char *na)
    {
        strcpy(name, na);
    }

    void initsex(int se)
    {
        sex=se;
    }

    void initage(int ag)
    {
        age=ag;
    }

    char * getname()
    {
        return name;
    }

    int getage()
    {
        return age;
    }

    int getsex()
    {
        return sex;
    }

    void printf()
    {
        cout<<"姓名:"<<name<<endl;
        cout<<"性别:"<<sex<<endl;
        cout<<"年龄:"<<age<<endl;
    }
};
class teacher:public person
{
    char post[20];
    int  salary;
public:
    teacher(char *na,int ag,int se,char *po,int sa):person(na,ag,se)
    {
        strcpy(post,po);
        salary=sa;
    }
    void printf()
    {
        person::printf();
        cout<<"职位:"<<post<<endl;
        cout<<"工资:"<<salary<<endl;
    }
};
class student:public person
{
    char xuehao[20];
    char Class[20];
public:
    student(char *na,int ag,int se,char *xh,char *cl):person(na,ag,se)
    {
        strcpy(xuehao,xh);
        strcpy(Class,cl);
    }
    void printf()
    {
        person::printf();
        cout<<"学号:"<<xuehao<<endl;
        cout<<"班级:"<<Class<<endl;
    }
};
void main()
{
    teacher te("liang",22,0,"教授",5000);
    student st("liang",22,0,"20112111225","11B");
    te.printf();
    cout<<"__________________"<<endl;
    st.printf();
    _getch();
    return;
}
#4
唯一的幸福2013-05-03 12:57
高手
#5
wj3177380112013-05-03 14:20
自己写的还能不懂呀,我晕
1