C++逗号运算符重载

#include <iostream>
#include <string>

class Person{
	int _id;
	std::string _name;
	unsigned int _age;
public:
	explicit Person(int id): _id(id){
	}

	Person(std::string name, unsigned int age):_id(0),  _name(name), _age(age){
	}

	std::string toString(){
		char strAge[10];
		sprintf(strAge, "Age:\t%d", _age);
		std::string res("Name:\t");
		res.append(_name);
		res += "\n";
		res.append(strAge);
		res += "\n";
		return res;
	}

	/// set person age.
	/// return the reference to self.
	Person& operator, (unsigned int age){
		_age = age;
		return *this;
	}

	/// set person name.
	/// note that the return value is the instance self.
	Person& operator, (std::string name){
		_name = name;
		return *this;
	}	
};


/// The resposibility of Nuwa class is to create Person through operator << () method
class Nuwa{
public:
	// return a person.
	Person operator << (unsigned int id){
		return Person(id);
	}
};

int main(int argc, char** argv){
	Nuwa nuwa;
	std::cout << (nuwa<<1, "Eric", 23).toString().c_str() << std::endl; //Name:   Eric Age:    23
	return 0;
}

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值