手把手教你c++运算符重载

2025-10-21 21:44:36

1、鼠标双击或者右击打开桌面上DEVc++软件,让其运行起来。Dev-C++是一个电脑Windows窗口运行环境下的一款非常适合于刚开始学习c++学者使用的入门级C/C++ 集成开发环境(IDE)。这款软件很自由,遵守GPL许可协议分发源代码。它大大集成了MinGW中的GCC编译器、GDB调试器和 AStyle格式整理器等众多自由软件。非常的试用,而且界面分类清楚,具有很强大的功能。

手把手教你c++运算符重载

2、点开文件,选择新建源代码,这时候新建的代码文本还是没有命名的,是一个空命名的文件,下面我们可以通过界面左上角的文件选项,选择另存为,可以存在电脑里任何一个盘,小编为了下次可以更好的找到文件,我存在电脑的桌面上。当然你们可以选择任何一个盘,根据各人所需

手把手教你c++运算符重载

3、运算符重载

实质是函数重载:在程序编译时

 把指定的运算表达式转换成对运算符函数的调用

 把运算的操作数转换成运算符函数的参数

 根据实参的类型决定调用哪个运算符函数

 C++中运算符重载的例子:

 “>>”和“<<” 是用于移位的运算符,通过C++的标准类库分别被 重载为流输入和流输出运算符

手把手教你c++运算符重载

4、运算符重载:注意事项

 C++不允许定义新的运算符

 通过重载现有的运算符,使它在用于类的对象时具有新类型的 含义

 重载后运算符的含义应该符合日常习惯

complex_a + complex_b

word_a > word_b

date_b = date_a + n

 有时使用函数调用更好

older(student_a, student_b)的语义比student_a > student_b更清晰: 年龄大小、身材高矮、体型胖瘦、……

 重载不改变运算符的优先级、结合性、语法结构及参数 个数

 以下运算符不能被重载:“.”、“.*”、“::”、“?:”、sizeof

 教材V2版p.340(V5版p.430)列出了可重载的运算符

手把手教你c++运算符重载

5、运算符重载的形式

 重载为类的成员函数

return_type operator operator_symbol(argument-list)

{ function-body }

 重载为类的友员函数

friend return_type operator perator_symbol(argument-list)

{ function-body }

operator_symbol必须是C++中可以重载的运算符 符号,例如“+”、“-”、……

 重载运算符“调用()、下标[]、成员访问->或者 赋值运算符=”时,运算符重载函数必须声明为 类的成员函数

 

手把手教你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;  // addition

private:

double real; // real part

double imaginary;  // imaginary part

};

Complex Complex::operator+( const Complex &operand2 ) const

{ return Complex( real + operand2.real,

imaginary + operand2.imaginary );

}

手把手教你c++运算符重载

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(); // destructor

bool operator!() const{ return length == 0;};// is String empty?

private:

}

 

P500

手把手教你c++运算符重载

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢