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

1) 在实验五的student类基础上实现二个构造函数,一个可根据姓名、学号、语、数、英成绩来构造一个学生对象,另一个则可根据姓名、学号来构造一个学生对象,并同

刘洋 发布于 2010-04-13 14:41, 1141 次点击
#include<iostream.h>
#include<string>
class Student{
private:
    string name, num;
    float c,m,e;
public:
    Student();//定义无参版本的构造函数
    Student(string na,string nu,float m1,float c1,float e1);//定义有参版本的构造函数
    ~Student()//定义析构函数
    void showStudent();
};
    Student::Student()
    {name="刘洋";
    num=12;
    m=0;
    c=0;
    e=0;
    }//在构造函数中对私有成员赋值
    Student::~Student()
    {cout<<"析构"<<num<<endl;
    }

    Student::Student(string na,string nu,float m1,float c1,float e1);//定义有参版本的构造函
    {name=na;
    num=nu;
    m=m1;
    c=c1;
    e=e1;
    }//在构造函数中对私有成员赋值
    Student::~student()
    {cout<<"析构"<<num<<endl;
    }
    inline void Student::showStudent()
    {cout<<name<<num<<m<<c<<e<<endl;
    }
};
int main()
{
   
    Student A,B;
    A.showStudent();
    B.showStudent("刘洋","12",95,100,78);
    return 0;
6 回复
#2
秀痘魔导士2010-04-13 15:17
帖名也太长了,而且不知道楼主想要做什么。
#3
yyblackyy2010-04-13 15:33
以下是引用秀痘魔导士在2010-4-13 15:17:35的发言:

帖名也太长了,而且不知道楼主想要做什么。
#4
阿标兄2010-04-14 20:20
我也看不明白!
#5
刘洋2010-04-15 08:56
#include<iostream>
#include<string>
using namespace std;
class Student{
private:
    string name;int num;
    float c,n,e;
public:
    Student();//声明无参版本的构造函数
    Student(string na,int nu,float n1,float c1,float e1);//声明有参版本的构造函数
    ~Student();
    void showStudent();
    float avar();
};
Student::Student()
{name="刘奎";
num=90;
n=0;
c=0;
e=0;
cout<<"构造"<<name<<endl;
}


Student::Student(string na,int nu,float n1,float c1,float e1)//定义有参版本的构造函
{name=na;
num=nu;
n=n1;
c=c1;
e=e1;
cout<<"构造"<<name<<endl;
}
Student::~Student()
{cout<<"析构:"<<name<<endl;
}
float Student::avar()
{return (n+c+e)/3;}
void Student::showStudent()
{cout<<"name"<<" "<<"num"<<" "<<"n"<<" "<<"c"<<" "<<"e"<<endl;
cout<<name<<" "<<num<<" "<<n<<" "<<c<<" "<<e<<endl;
}

int main()
{
    Student stu1;   
    stu1.showStudent();
    Student stu2("刘洋",12,95,100,78);
    stu2.showStudent();
    cout<<"stu1的信息:"<<stu1.avar()<<endl;
    cout<<"stu2的信息:"<<stu2.avar()<<endl;
    return 0;
}
#6
缝小肛2010-04-15 18:16
#include<iostream>
#include<string>
using namespace std;

class Student
{
private:

    string m_name;
    string m_num;
    float m_c;
    float m_m;
    float m_e;

public:

    Student();      //定义无参数的构造函数
    Student(string na,string nu,float m1,float c1,float e1);//定义有参数的构造函数
    ~Student();     //定义析构函数
    void show();
};

Student::Student()  //在构造函数中对私有成员赋值
{
    m_name = "刘阳";
    m_num = 12;
    m_m = 0;
    m_c = 0;
    m_e = 0;
    cout<<"无参的构造函数被调用"<<endl;
}

Student::~Student()
{
    cout<<"析构函数被调用"<<endl;
}

Student::Student(string na,string nu,float m1,float c1,float e1)                                  //在构造函数中对私有成员赋值
{
    m_name = na;
    m_num = nu;
    m_m = m1;
    m_c = c1;
    m_e = e1;
    cout<<"带有参数的构造函数被调用"<<endl;
}

void Student::show()
{
    cout<<m_name<<"  "<<m_num<<"  "<<m_m<<"  "<<m_c<<"  "<<m_e<<endl;
}

int main()
{

    Student A;
    Student B("刘洋","12",95,100,78);
    A.show();
    B.show();
    return 0;
}

我不知道你的目的是什么 ,但你的程序不能运行,有点小小的错误,改正了,特别提一下 注意程序的风格。
我也增加了一些东西,方便观察 构造函数什么时候被调用,什么时候被析构。
#7
刘洋2010-04-16 20:30
楼上的谢谢你,你的楼上是我自己写的程序!和你的应该差不多!
1