回 帖 发 新 帖 刷新版面

主题:空构造函数问题

#include<iostream.h>
#include<string.h>
class base{
    char name[20];
    int number;
public:  base( ) { }
         base(char a[],int b)
         { strcpy(name ,a);
            number=b;
         }
         void display ()
         {
             cout<<name<<"["<<number<<"]"<<endl;
         }
};
class book:public base{
    char bn[20];
public:
    book(){}
    book(char a[],int b,char c[]):base(a,b)
    {
        strcpy(bn,c);
    
    }
    void bookshow()
    {  display();
           cout<<"作者属性:"<<bn<<endl;
    }
};
class reader:public base {
    int total;
    book  rent[5];
public:  reader (char a[],int b):base(a,b)
        {
            total=0;
        }
        void amount(book &t)
        {    rent[total]=t;
            total++;
        }
        void show()
        {  cout<<"读者:";display() ;
           cout<<"所借图书:"<<endl;
           for( int i=0;i<total;i++)
           {   cout<<i+1;
                rent[i].display();
                cout<<endl;
           }
        }
};
int main()
{  book b1("离散数学",1001,"屈婉玲"),b2("C语言",1002,"谭浩强");
   reader a ("张华",101);
   a.amount(b1);
   a.amount(b2);
   a.show();
   return 0;
}

在base类和book类中为什么要在有参构造函数前要定义一个空构造函数,这里空构造函数为什么必不可少?有什么用途?它是在什么情况下需要使用的。
    

回复列表 (共3个回复)

沙发

并不是“空构造函数”,而是“默认构造函数”
当你直接构建,或者构建临时对象的时候,就需要用到默认构造函数来构造对象了,例如
reader a;这时会调用到默认构造函数

板凳


楼上说得对,不过我感觉应该把rent[i].display()改为rent[i].bookshow()吧,这样才能输出作者姓名

3 楼

看看书 ,就知道了

我来回复

您尚未登录,请登录后再回复。点此登录或注册