C++ Prime 之 類型別轉換初步學習
阿新 • • 發佈:2019-02-10
隱式的類型別轉換 :
我們先定義一個類:
class Person{
public:
Person()=default;
Person(const std::string &s_name):name(s_name){}
Person(std::istream&){}
public:
Person &is_samename(const Person&);
private:
std::string name;
};
is_samename()函式的定義:
Person& Person::is_samename(const Person&){
/*省略細節*/
return *this;
}
我們用string實參呼叫Person的is_samename成員,呼叫時,編譯器會用給定的string自動建立Person臨時物件,然後傳遞給is_samename,當is_samename完成後,我們便不能再訪問該物件。
注意:隱式類型別轉換隻允許一次轉換
Person person;
std::string newName="lao zi";
person.is_samename(newName); //從string型別轉換到Person型別
person.is_samename("lao zi"); //錯誤:這種方法使用了兩種轉換規則 "lao zi"->string,string->Person
person.is_samename(std::string("lao zi")/*Person("lao zi")*/); //正確
類似的,我們把cin轉換成Person型別:
Person person1;
person.is_samename(std::cin);
第一篇部落格學習記錄,希望我會堅持下去!!!