c++ 类的显式转换、隐式转换、可调用对象

我构建一个Front对象,其中包含了显式转换、隐式转换、可调用对象。

class Front{
	public:
		explicit Front(string str):s(str){}	//阻止隐式转换的构造函数
		operator string()const { //potential change 隐式转换
			return s;//返回要转换的成员
		}
		string get()const{  //explicit change 显式转换
			return s;//返回要转换的成员
		}
		void  operator ()()const{//可调用,后一个括号里放参数
			cout<<" can be called "<<s<<endl;// can be called usage	
		}
	private:
		string s;
};

测试:

int main(){
	using namespace std;
	Front f("sd");//构造对象
	//当构造函数为explicit时不能用 Front f="sd"![请添加图片描述](https://img-blog.csdnimg.cn/30a4d1f03c614a5294fc40e522219c45.png)

	string o="he";
	o+=f;//这里执行了隐式转换
	cout<<"potential change : "<<o<<endl;
	cout<<"can be called : ";
	f();//可调用对象执行
	cout<<"explicit change : "<<f.get()<<endl;
	//用f.get()来显式的转换类型
}

执行结果:在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值