第一次定義Book類的錯誤

要求

在這裏插入圖片描述
定義一個Book類,在int main中,要求創建一個圖書對象,並對該圖書進行簡單的顯示、借閱、歸還管理。

#include<iostream>
#include<cstring>
using namespace std;
class Book
{public:
    static int number;
    Book(char a,double b);          //錯誤1
    void display();
    void borrow();
    void restore(){number++;}
private:
    char bookname;                   //錯誤1
    double price; 
};
Book::number=0;                      //錯誤4
Book::Book(char a,double b){          //錯誤1
          strcpy(bookname,a);          //錯誤2
           price=b;
           number++;}
void Book::borrow() { number--; cout<<"圖書數量"<<number;}
void display(){cout<<"書名 ;"<<bookname<<"  價格"<<price<<endl;}  //錯誤3
int main(){
    Book a("資治通鑑",78.9);
    a.display();
    a.borrow();
    a.restore();
 }

錯誤展示:

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
錯誤明示
1.字符串的定義錯誤 char bookname改爲char* bookname
2.但是這樣也不能顯示原因在於沒有給書名開闢空間;在錯誤2加入

 bookname=new char[strlen(a)+1];strcpy(bookname,a);

3.沒有給display加歸屬void Book::display(){cout<<"書名;"<<bookname<<" 價格:"<<price<<endl;}
4.局外static數據聲明賦初值沒加數據類型int還有歸屬
5.優化程序更貼心
解決方案:

#include<iostream>
#include<cstring>
using namespace std;
class Book
{public:
    static int number;
    Book(char *a,double b);
    void display();
    void borrow();
    void restore(){number++;cout<<"存書";}
private:
    char *bookname;
    double price;
};
int Book::number=0;
Book::Book(char *a,double b){
    bookname=new char[strlen(a)+1];strcpy(bookname,a);
          strcpy(bookname,a);
           price=b;
           number++;}
void Book::borrow() { number--; cout<<"借出書後圖書數量"<<number;}
void Book::display(){cout<<"書名;"<<bookname<<"  價格:"<<price<<endl;}
int main(){
    Book a("資治通鑑",78.9);
    a.display();
    a.borrow();
    cout<<endl;
    a.restore();
    cout<<endl;
    cout<<"現有圖書數量"<<a.number;}

運行結果
在這裏插入圖片描述
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章