手把手教你c++运算符重载
1、鼠标双击或者右击打开桌面上DEVc++软件,让其运行起来。Dev-C++是一个电脑Windows窗口运行环境下的一款非常适合于刚开始学习c++学者使用的入门级C/C++ 集成开发环境(IDE)。这款软件很自由,遵守GPL许可协议分发源代码。它大大集成了MinGW中的GCC编译器、GDB调试器和 AStyle格式整理器等众多自由软件。非常的试用,而且界面分类清楚,具有很强大的功能。
2、点开文件,选择新建源代码,这时候新建的代码文本还是没有命名的,是一个空命名的文件,下面我们可以通过界面左上角的文件选项,选择另存为,可以存在电脑里任何一个盘,小编为了下次可以更好的找到文件,我存在电脑的桌面上。当然你们可以选择任何一个盘,根据各人所需
3、运算符重载实质是函数重载:在程序编译时 把指定的运算表达式转换成对运算符函数的调用 把运算的操作数转换成运算符函数的参数 根据实参的类型决定调用哪个运算符函数 C++中运算符重载的例子: “>>”和“<<” 是用于移位的运算符,通过C++的标准类库分别被 重载为流输入和流输出运算符
4、运算符重载:注意事项 C++不允许定义新的运算符 通过重载现有的运算符,使它在用于类的对象时具有新类型的 含义 重载后运算符的含义应该符合日常习惯complex_a + complex_bword_a > word_bdate_b = date_a + n 有时使用函数调用更好older(student_a, student_b)的语义比student_a > student_b更清晰: 年龄大小、身材高矮、体型胖瘦、…… 重载不改变运算符的优先级、结合性、语法结构及参数 个数 以下运算符不能被重载:“.”、“.*”、“::”、“?:”、sizeof 教材V2版p.340(V5版p.430)列出了可重载的运算符
5、运算符重载的形式 重载为类的成员函数return_type operator operator_symbol(argument-list){ function-body } 重载为类的友员函数friend return_type operator perator_symbol(argument-list){ function-body }operator_symbol必须是C++中可以重载的运算符 符号,例如“+”、“-”、…… 重载运算符“调用()、下标[]、成员访问->或者 赋值运算符=”时,运算符重载函数必须声明为 类的成员函数
6、运算符重载为成员函数return_type operator operator_symbol(argument-造婷用痃list){ function-body }argument-list中参数的个数比原operator_symbol所需要的参数个数 少一个(后置“++”、“--”除外) 例class Complex {public:Complex( double = 0.0, double = 0.0 ); // constructor Complex operator+( const Complex & ) const; // additionprivate:double real; // real partdouble imaginary; // imaginary part};Complex Complex::operator+( const Complex &operand2 ) const{ return Complex( real + operand2.real,imaginary + operand2.imaginary );}
7、运算符重载为成员函数实现单目运算单目运算: op operand假如operand是类A的对象 op应该重载为帆歌达缒A的成员函数,该函数没有参数return_type operator op()return_type是op operand的类型例如:! string_s,等价于string_s.operator!() class String {public:String( const char * = "" ); // conversion/default constructor~String(); // destructorbool operator!() const{ return length == 0;};// is String empty?private:}P500