C Primer 編寫較健壯的建構函式

2021-09-16 19:57:31 字數 932 閱讀 6561

題目:設計乙個類,它又三個unsigned成員,分別表示年、月和日。為其編寫建構函式,接受乙個表示日期的string引數,你的建構函式應該能處理不同的資料格式,如january 1,1990、1/1/1990、jan 1 1990等

#include#include#includeusing namespace std;

class date

;unsigned date::change_to_digit(const string& s)

; if (s.find_first_of(numbers) != string::npos)

return stoi(s);

vectorv;

decltype(v.size()) loc = 0;

for (decltype(v.size()) i = 0; i != v.size(); ++i)

if (s.find(v[i]) != string::npos)

return loc;

}date::date(const string& s)

; auto pos = s.find_first_of(punct);

month = change_to_digit(s.substr(0, pos));

++pos;

auto pos2 = s.find_first_of(punct, pos);

date = stoi(s.substr(pos, pos2 - pos));

++pos2;

auto pos3 = s.find_first_of(punct, pos2);

year= stoi(s.substr(pos2, pos3 - pos2));

}void print(date& item)

int main()

C Primer 15 繼承的建構函式

子類為完成基類初始化,在c 11之前,需要在初始化列表呼叫基類的建構函式,從而完成建構函式的傳遞。如果基類擁有多個建構函式,那麼子類也需要實現多個與基類建構函式對應的建構函式。1 class base 25 base char c m c c m value 0 6private 7 intm va...

第二章 構造高效且健壯的網路程式 一

第二章 構造高效且健壯的網路程式 一 技巧15 理解tcp的寫操作 1 從應用題程式的角度看寫操作 首先會將資料從使用者緩衝區複製到核心中去,tcp可能傳送全部 部分或者不傳送資料,應用程式無法判定傳送了多少資料,也無法判斷對等實體是否判定 除非tcp傳送緩衝區滿了,否則寫操作是不會被阻塞的 寫操作...

c primer 學習筆記22類的建構函式

建構函式是特殊的成員函式,只要建立類型別的新物件,都要執行建構函式。建構函式的工作是保證每個物件的資料成員具有合適的初始值。class sales item private std string isbn unsigned units sold double revenue 建構函式可以被過載 可以...