Sales data類實現 及 類特性

2021-09-26 11:05:00 字數 3469 閱讀 7792

實現sales_data

#include #include class sales_data 

public:

sales_data() = default; //顯式宣告預設建構函式

sales_data(const std::string& book) :bookno(book){}

sales_data(std::istream& is)

private:

std::string bookno;

unsigned units_sold = 0;

double sellingprice = 0.0;

double saleprice = 0.0;

double discount = 0.0;

};//好習慣: 現將友元函式宣告

std::istream& operator >> (std::istream&, sales_data&);

std::ostream& operator << (std::ostream&, const sales_data&);

bool operator == (const sales_data&, const sales_data&);

//全域性函式.

inline bool compareisbn(const sales_data& lhs, const sales_data& rhs)

inline bool operator == (const sales_data& lhs, const sales_data& rhs)

inline bool operator != (const sales_data& lhs, const sales_data& rhs)

sales_data& sales_data::operator += (const sales_data& rhs)

sales_data operator + (const sales_data& lhs, const sales_data& rhs)

std::istream& operator >> (std::istream& in, sales_data& s)

std::ostream& operator << (std::ostream& out,const sales_data& s)

int main()

} std::cout << "有效彙總資訊: isbn,售出書本,原始**,實際**,折扣:" << total << std::endl;

} else

return 0;

}

sales_data() = default;

std::string isbn() const

sales_data& operator += (const sales_data&);

//用乙個函式代替過載+=的效果

sales_data& sales_data::combine(const sales_data &rhs)

//使用combine時,total繫結到this上,trans 繫結到 rhs上,

total.combine(trans);

定義型別成員,別名(alias)作用範圍從定義開始

class screen ;
sales_data(std::string s = ""):bookno(s) {}
sales_data(std::string s,unsigned cnt,double sellp,double salep) : bookno(s),units_sold(cnt),sellingprice(sellp),saleprice(salep){}

sales_data() : sales_data("", 0, 0.0, 0.0) {}

sales_data(std::istream& is) :sales_data()

sales_data obj(); //錯誤,宣告了乙個返回值是sales_data的函式

sales_data obj; //呼叫預設構造

在需要使用sales_data的地方,使用接收乙個引數的建構函式的引數型別作為替代,能隱式轉化成sales_data型別
//如果:

class sales_data ;

string ss = "aaa";

total.combine(ss); //combine另乙個sales_data的物件,這裡用string物件替代

//編譯器用string物件建立了乙個sales_data物件,這個生成的sales_data臨時物件作為引數傳給combine

total.combine("dads"); //"dads"是c風格的字串 char,不是string物件

total.combine(string("abc")); //轉化成string

total.combine(sales_data("abc")); //直接轉化成sales_data物件

class sales_data 

explicit sales_data(const std::string &s) : bookno(s) {}

explicit sales_data(std::istream&);

};

std::string temp = "acx";

sales_data item(temp);

sales_data item = temp; //拷貝形式,隱式轉換成sales_data

item.combine(sales_data(temp));

item.combine(static_cast(cin));

item.combine(static_cast(temp));

friend std::istream& operator >> (std::istream&, sales_data&);

friend std::ostream& operator << (std::ostream&,const sales_data&);

friend bool operator == (const sales_data&, const sales_data&);

std::istream& operator >> (std::istream& in, sales_data& s) 

std::ostream& operator << (std::ostream& out,const sales_data& s)

kmeans聚類及Matlab實現

kmeans k均值聚類 是一種常用的聚類演算法,因其簡單且效能還算良好而受廣泛應用。kmeans聚類的中心思想是 確定k個類,計算模式特徵向量到每個聚類中心的 距離 將特徵向量歸併到距離最小的聚類中心所在的類中。把每一類的平均向量特徵的均值作為新的類心。最後,使得樣本與類均值的誤差平方和最小。步驟...

k Means聚類原理及實現

吸收天地之精華,為了完成對資料聚類的任務,廣泛查閱各種資料,現總結如下 聚類分析是沒有給定劃分類別的情況下,根據樣本相似度進行樣本分組的一種方法,是一種非監督的學習演算法。聚類的輸入是一組未被標記的樣本,聚類根據資料自身的距離或相似度劃分為若干組,劃分的原則是組內距離最小化而組間距離最大化,如下圖所...

C list類及常用介面實現

因為list時雙向鍊錶,其內部存的不只有資料,還有前後指標,直接解引用會出錯 還有它的物理儲存空間不是連續的,操作是向前 後偏移一定的大小,而下乙個緊挨的物理空間可能是沒有申請的 所以將原生態指標進行封裝,因迭代器使用形式與指標完全相同,因此在自定義的類中必須實現以下方法 指標可以解引用,迭代器的類...