要求
定義一個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;}
運行結果