1. 程式人生 > >C++ Prime 之 類型別轉換初步學習

C++ Prime 之 類型別轉換初步學習

隱式的類型別轉換 :

我們先定義一個類:
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);

第一篇部落格學習記錄,希望我會堅持下去!!!