2 apeapple apeapple 于 2016.09.23 21:17 提问

关于C++ 字符串类+运算符重载

当拼接一个C++串对象和一个字符串,返回值为什么不能是引用?
类中声明如下:
friend String operator +(char*, const String &);

1个回答

leewers
leewers   2016.09.23 21:44

其实倒也不是不能,就是会改变+运算符本身的语义,但重载一般的原则就是尽量不改变该操作符的语义。如果返回引用的话,这样的语句就会出现了: (a + b) = c, 而通常我们是不这样写的,+运算符本身的语义也和这样的语句是不相符合的。

leewers
leewers 回复apeapple: 大概是这个意思,只有需要做左值的时候才需要返回引用,比如重载赋值操作符
接近 2 年之前 回复
apeapple
apeapple 谢谢解答!是不是就是说根据运算符实际意义判断是不是做左值,来决定返回值类型?
接近 2 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
C++ 自定义string类 重载相关运算符
c++提供的string类 c++提供的string类可以做很多事情,它本质上是也是类,它的很多运算符都是通过重载进行实现的。 今天我们自己来简单来实现MyString类来模拟 string类能做得一些事情。重载+、[]、==、!=、> 几个运算符。 写法和自定数组类型重载相关运算符差不多,多了一个+ 拼接运算符重载。 代码展示 MyString.h MyString.cpp
设计String类,并且在String类中使用运算符重载
程序代码: #include #include using namespace std; class String//定义String类 { public: String( );//默认构造函数 String(char *s);//构造函数 String(String &str);//构造函数 ~String();//析构函数 void displ
[c++]String字符串类的运算符重载
在c++中有一个新定义的类型string,可以不用那么麻烦的操作字符串,并且一些高级的运算符重载让她的使用更加便捷 下面是String类的定义和成员函数的定义: 再下面是测试程序:
字符串类中重载运算符
测试程序 /// @file exam_1_1.cpp /** 1.完善MyString, 引用计数RefMyString operator= operator+ operator[](int nIndex) operator== operator!= operator> */ #include "common.h" #include "MyString.h" void fnTestStri
c++运算符重载字符串想加
阿斯达所多 #include using namespace std; class C { private: string s; public: C(){} C(string a) { s=a; } C operator+(C &b) { C c; c.s=s+b.s; return c; } void show() {
利用string类重载运算符!=比较string类字符串
// ex5-11.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include #include using namespace std; int _tmain(int argc, _TCHAR* argv[]) { string word="?ate"; for (char ch='a';word!="mate";++ch) { c
字符串 赋值运算符 重载
问题描述:对字符串的赋值运算符进行重载。 注意点:1.将返回值的类型声明为该类型的引用,同时在函数结束前返回实例自身的应用。返回引用的目的是允许连续赋值。                 2.把传入的参数的类型声明为常量引用。如果传入参数不是引用而是实例,那么从形参到实参会调用一次复制构造函数。把参数声明为引用可以避免无所谓的消耗,提高代码的效率。        3.判断传入的参数和当前的实
<C/C++基础>设计一个String类(重载运算符等)
参考资源: 谷歌大神,《C++程序设计语言》 一,设计要求 基本要求:C++的基本数据类型中没有字符串变量。C++提高了两种字符串的表示:C风格的字符串和标准C++引入的string类。String类应由字符串数组以及其长度组成。该类至少应包含两个“私有”成员变量, 还应具有如下成员函数: 1)多种功能的构造函数; 2)析构函数; 3)重载运算符operator>>用于输入,同样重载运算符operator<<用于输出操作;
用c++ 编写一个程序,重载运算符“+”,实现字符串的连接。
用c++ 编写一个程序,重载运算符“+”,实现字符串的连接。
设计一个string类,通过重载“+=”运算符,实现对两个string类对象m1,m2的操作。
#include class string { private:  int x,y; public:  string(){}  string(int a,int b)  {   x=a;y=b;  }  void display()  {   cout  }  void operator +=(string m2)  {   x+=m2.x;   y+=m2.y