c++学习笔记 类运算符重载与友元与类型转换

有这样一个类:

class Str
{
	char str[100];
	int n;
public:
	Str(const char *pstr = "\0"){
		strcpy(str, pstr);
		n = strlen(str); 
	}
	const char *getstr()const{ return str; }
	const int getcount()const{ return n; }
	void add(char *pstr){
		if ((strlen(str) + strlen(pstr)) < 100)
		{
			strcat(str, pstr);
			n = strlen(str);
		}
		else
			cout << "size error!\n";
	}
	void show()const{ cout << str; }
	~Str(){}
};



这个类仿string类(劣质),允许用户将字符串相加(有限制),并且计算字符个数。

但是我们更想用类似内置类型那样的运算方法:

int a=1,b=3;
a=a+b;
而不是经过对象的方法调用来实现:

Str s1("Hello ");
s1.add("words!");//不想这样使用
s1.show();//想用cout<<s1;来输出


于是,便有了更美观的方法: 运算符重载

比如说我们想用下面的方法不是调用类方法(add)来进行字符串相加:

Str s2("c++!");
s1=s1+s2;
这就需要重载运算符“+”。

返回值 operator符号(参数列表);

我们先来重载运算符“=”使之能够进行两个对象的赋值操作,现在看看是怎么使用的:

class Str
{
	...
public:
	...
		//之前的
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值