我有類傢俱:如何用C++中的一個類創建多個項目?
Furniture.h:
#include <iostream>
#include <string>
using namespace std;
class Furniture {
public:
Furniture();
~Furniture();
void setname(string name);
void setprice(double price);
double getprice();
string getname();
virtual void printSpecs();
private:
string name;
double price;
protected:
static int NumberOfItems;
int Id;
};
furniture.cpp:
#include "furniture.h"
Furniture::Furniture() {
}
Furniture::~Furniture() {
}
void Furniture::setname(string name) {
this->name = name;
}
string Furniture::getname()
{
return this->name;
}
void Furniture::setprice(double price) {
this->price = price;
}
double Furniture::getprice() {
return this->price;
}
void Furniture::printSpecs() {
cout<<"Price: "<<this->price<<endl;
cout<<"Name: "<<this->name<<endl;
}
int main() {
Furniture *model = new Furniture();
model->setname("FinalDestiny");
model->setprice(149.99);
model->printSpecs();
delete model;
}
一切工作正常,但我想補充相同類別的多個傢俱物品並只更新NumberOfItems。有沒有辦法做到這一點?
另外,我的代碼好嗎?我的意思是,我該如何改進它?我對OOP很陌生,我想學習一些好的做法。
謝謝。
那麼setter/getters的用法不好? – FinalDestiny 2012-03-19 11:03:29
@FinalDestiny不是。 C++專家一致認爲,大多數代碼中getter/setter被過度使用。他們確實在某些代碼中使用它(例如,很難在沒有它們的情況下實現DAO),但大多數代碼並不需要它們。它們不適合面向對象的代碼,每個類都有一個特定的目的。 – 2012-03-19 11:05:59
尤其是'getters'。沒有獲得者是好的。告訴物體做你想做的事。與其他對象協作完成工作。例如。 'printSpecs'可以使用'std :: ostream'對象來使用。這使得測試更容易,因爲目前,您隱式地耦合到「cout」對象。 – 2012-03-19 11:31:47