C++关于构造函数和析构函数的问题
RT:
#include<string>
#include<iostream>
using namespace std;
class student
{
public:
student(int n,string nam,char s)
{
num=n;
name=nam;
易做图=s;
cout<<"Constructor called."<<endl;
}
~student()
{cout<<"Destructor called."<<endl;}
void display()
{
cout<<"num: "<<num<<endl;
cout<<"name: "<<name<<endl;
cout<<"易做图: "<<易做图<<endl<<endl;
}
private:
int num;
string name;
char 易做图;
};
int main()
{
student stud1(10010,"wang_li",'f');
stud1.display();
student stud2(10010,"wang_li",'f');
stud2.display();
return 0;
// system("pause");
}
修改上述程序:修改定义析构函数,在析构函数中输出学号num。再运行程序,观察运行结果。
修改上述main程序:使用对象指针,用new生成一个学生对象,然后,用delete清除该对象,使用单步运行观察运行结果。
修改上述程序:增加一个私有数据成员成绩score;增加定义一个无参的构造函数;增加一个成员函数readdata:输入一学生的学号和成绩;增加一个成员函数getscore:取得学生的成绩。再修改main函数;定义一个班的同学(假如一个班有10位同学),输出该班的平均成绩。(提示:采用对象数组)
增加定义一个友元函数fdisplay,在该函数中输出指定学生的学号、姓名、成绩
25分一题不解释!
答案:1,修改上述程序:修改定义析构函数,在析构函数中输出学号num。再运行程序,观察运行结果。
#include<string>
#include<iostream>
using namespace std;
class student
{
public:
student(int n,string nam,char s)
{
num=n;
name=nam;
易做图=s;
cout<<"Constructor called."<<endl;
}
~student()
{cout<<"Destructor called."<<"the num: "<<num<<endl;}
void display()
{
cout<<"num: "<<num<<endl;
cout<<"name: "<<name<<endl;
cout<<"易做图: "<<易做图<<endl<<endl;
}
private:
int num;
string name;
char 易做图;
};
int main()
{
student stud1(10010,"wang_li",'f');
stud1.display();
student stud2(10010,"wang_li",'f');
stud2.display();
return 0;
// system("pause");
}
运行结果,在析构函数的输出结果:
Constructor called.
num:10010
name:wang_li
易做图:f
Constructor called.
num:10010
name:wang_li
易做图:f
Destructor called.the num:10010
Destructor called.the num:10010
(作用:能够观察到具体析构的对象的信息。)
2,修改上述main程序:使用对象指针,用new生成一个学生对象,然后,用delete清除
该对象,使用单步运行观察运行结果。
#include<string>
#include<iostream>
using namespace std;
class student
{
public:
student(int n,string nam,char s)
{
num=n;
name=nam;
易做图=s;
cout<<"Constructor called."<<endl;
}
~student()
{cout<<"Destructor called."<<"the num: "<<num<<endl;}
void display()
{
cout<<"num: "<<num<<endl;
cout<<"name: "<<name<<endl;
cout<<"易做图: "<<易做图<<endl<<endl;
}
private:
int num;
string name;
char 易做图;
};
int main()
{
student stud1(10010,"wang_li",'f');
stud1.display();
student* st=new student(10011,"Lin_lan",'f');
//采用new关键字创建对象
st->display();
//用指针调用display()函数。
delete st;
return 0;
// system("pause");
}
运行结果相同。
~~~~~~~~~~~~~~~
修改上述程序:增加一个私有数据成员成绩score;增加定义一个无参的构造函数;增
加一个成员函数readdata:输入一学生的学号和成绩;增加一个成员函数getscore:
取得学生的成绩。再修改main函数;定义一个班的同学(假如一个班有10位同学),
输出该班的平均成绩。(提示:采用对象数组)
#include<string>
#include<iostream>
using namespace std;
class student
{
public:
student(){cout<<"Constructor called!!!!!!"<<endl;}//
//无参数的构造函数,方便创建对象数组。
student(int n,string nam,char s)
{
num=n;
name=nam;
易做图=s;
cout<<"Constructor called."<<endl;
}
~student()
{cout<<"Destructor called."<<"the num: "<<num<<endl;}
void display()
{
cout<<"num: "<<num<<endl;
cout<<"name: "<<name<<endl;
cout<<"易做图: "<<易做图<<endl<<endl;
}
void readdate(int nu,int sco)
{num=nu;score=sco;}
//增加的readdate函数
int getscore()
{return score;}
//增加的取得学生的成绩的函数..
private:
int num;
string name;
char 易做图;
int score; //增加新的私有对象成员 score
};
int main()
{
student stud1(10010,"wang_li",'f');
stud1.display();
student* st=new student(10011,"Lin_lan",'f');
//采用new关键字创建对象
st->display();
//用指针调用display()函数。
d
上一个:学好C++的前提是把什么先学好呀
下一个:C++把一汉字转换成Unicode怎么计算?