当前位置:编程学习 > C/C++ >>

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怎么计算?

CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,