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

我想请教一下,这个程序应该怎么改,才能得到正确的答案。

棉雨 发布于 2011-04-24 17:09, 554 次点击
#include"iostream"
using namespace std;
class Student/*构造一个学生类*/
{
private:
    int num;
protected:
    char name[12];
    char sex;
    int age;
public:
    void display()
    {
        cout<<"学号:"<<num<<endl;
        
        cout<<"姓名:"<<name<<endl;
        
        cout<<"性别:"<<sex<<endl;
        
        cout<<"年龄:"<<age<<endl;
        
    }
    void Set_data()
    {
        cout<<"请输入学号:"<<endl;
        cin>>num;
        cout<<"请输入姓名:"<<endl;
        cin>>name;
        cout<<"请输入性别:"<<endl;
        cin>>sex;
        cout<<"请输入年龄:"<<endl;        
        cin>>age;
   
    }
};
class CollegeStudent:private Student/*私有继承学生类*/
{
private:
    char department[20];
    char speciafy[20];
public:
    void display1(CollegeStudent stu1)
    {
        stu1.display();
        cout<<"姓名:"<<name<<endl;
        cout<<"院系:"<<department<<endl;
        cout<<"专业:"<<speciafy<<endl;
    }
    void Set_data1(CollegeStudent &stu2)
    {
        stu2.Set_data();
        
        cout<<"请输入院系:"<<endl;
        cin>>department;
        cout<<"请输入专业:"<<endl;
        cin>>speciafy;
    }
};
void main()
{
    CollegeStudent stu;
    stu.Set_data1(stu);
    stu.display1(stu);
}
运行的时候,没有得到相应的结果。帮忙看一下,谢谢!!
6 回复
#2
dengjinbao2011-04-24 21:07
程序代码:
#include"iostream"
using namespace std;
class Student/*构造一个学生类*/
{
private:
    int num;
protected:
    char name[12];
    char sex;
    int age;
public:
    void display()
    {
        cout<<"学号:"<<num<<endl;
      
        cout<<"姓名:"<<name<<endl;
      
        cout<<"性别:"<<sex<<endl;
      
        cout<<"年龄:"<<age<<endl;
      
    }
    void Set_data()
    {
        cout<<"请输入学号:"<<endl;
        cin>>num;
        cout<<"请输入姓名:"<<endl;
        cin>>name;
        cout<<"请输入性别:"<<endl;
        cin>>sex;
        cout<<"请输入年龄:"<<endl;      
        cin>>age;
   
    }
};
class CollegeStudent:public Student/*私有继承学生类*///把私有继承变成共有继承
{
private:
    char department[20];
    char speciafy[20];
public:
    void display1(CollegeStudent stu1)
    {
        stu1.display();
        cout<<"姓名:"<<name<<endl;
        cout<<"院系:"<<department<<endl;
        cout<<"专业:"<<speciafy<<endl;
    }
    void Set_data1(CollegeStudent &stu2)
    {
        stu2.Set_data();
      
        cout<<"请输入院系:"<<endl;
        cin>>department;
        cout<<"请输入专业:"<<endl;
        cin>>speciafy;
    }
};
void main()
{
    CollegeStudent stu;
    stu.Set_data1(stu);
    stu.display1(stu);
}
#3
mm1010220cs2011-04-25 12:57
你的程序没问题,包含文件写成#include <iostream>
还有,你的性别定义成char字符变量个人感觉不是很好
#4
棉雨2011-04-25 15:57
嗯嗯,后来我改成了跟名字一样的用字符数组。呵呵,谢谢你们。
#5
mm1010220cs2011-04-25 18:16
回复 4楼 棉雨
那个加点分嘛,哈哈
#6
Noll_Nie2011-04-26 22:15
这里私有继承和公有继承好像并没有直观的显示啊?
结果怎么不对呢?
求解释!
#7
棉雨2011-04-27 00:29
私有继承的访问权限是:公有成员和保护成员都是在派生类中访问,而在派生类外不能访问。私有成员在派生类内和派生类外都不能访问。在这个程序中,Set_data()和display()都是类Student的公有成员函数,故在派生类collegesudent中可以访问。若在派生类CollegeStudent外直接访问Set_data()和display(),运行时将会出错。比如在main()函数中写成main()
{CollegeStudent stu;
stu.Set_data();
stu.diaplay();
}.会出错。
上面的程序是正确的。运行的时候注意一下数据的输入就可以了。
1