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);

第一篇博客学习记录,希望我会坚持下去!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值