正在加载图片...
(2)除赋值运算符外,其他运算符函数都可以由派生类继承。并且派生类还可以 有选择地重载自己所需要的运算符(包括基类重载的运算符) 要重载一个运算符,先要创建一个运算符函数( operator function)。一般将运算符函数 定义成类的成员函数或友元函数 定义成员运算符函数的格式如下: return type class name operator @(arg list) operation to per formed 其中, class name是重载运算符的类名,opρ erator是运算符重载的关键字,@是要重载 的运算符符号, arg list是该运算符所需的操作数。 Operator@是函数名,函数的返回类型是 return type 在类说明体内声明运算符函数用如下形式: 例6.2]二元运算符重载程序EX62.CP 6.1.3各种运算符重载设计的问题讨论 下面进一步讨论运算符重载的各类情形,分析它们在使用中应注意的技术内涵和方法上 的问题 6.1.3.1若重载运算符是向对象加上一个数的情况 例6.2a]EX62a.CPP。 6.1.3.2关于重载一和=的方法与上述类似与不同处 [例6.2b]EX62b.CPP 6.1.3.3关系运算符和逻辑运算符重载 重载运算的返回值不是定义该重载运算符的对象,而是一个代表true或 false的整数值。 例6.2c]EX6_2c.CPP 元运算符的重载 重载一元运算符的成员函数没有参数 [例6.2d]EX62d.CPP 6.1.3.5友元运算符重载 可以用友元函数重载运算符,但它与成员运算符函数的主要区别在于: (1)参数个数不同。 (2)成员函数通过thi指针传递运算符左边的操作数,而友元函数则没有该指针,必 须显示传递所有参数。 注意:不能用友元函数重载赋值运算符,而只能用友元函数。 友元函数重载运算符,能够在运算中用对象激活C++固有数据类型 [例6.2e]EX6_2e.CPPc 6.1.3.6存储分配 通过对new和 delete的重载,能够在其外部定义库函数的通用算法的基础上,提高特(2)除赋值运算符外,其他运算符函数都可以由派生类继承。并且派生类还可以 有选择地重载自己所需要的运算符(包括基类重载的运算符)。 要重载一个运算符,先要创建一个运算符函数(operator function)。一般将运算符函数 定义成类的成员函数或友元函数。 定义成员运算符函数的格式如下: return_type class_name::operator@(arg_list) { //operation to per formed } 其中,class_name 是重载运算符的类名,operator 是运算符重载的关键字,@是要重载 的运算符符号,arg_list 是该运算符所需的操作数。Operator@是函数名,函数的返回类型是 return_type. 在类说明体内声明运算符函数用如下形式: [例 6.2] 二元运算符重载程序 EX6_2.CPP。 6.1.3 各种运算符重载设计的问题讨论 下面进一步讨论运算符重载的各类情形,分析它们在使用中应注意的技术内涵和方法上 的问题。 6.1.3.1 若重载运算符是向对象加上一个数的情况 [例 6.2a] EX6_2a.CPP。 6.1.3.2 关于重载—和=的方法与上述类似与不同处 [例 6.2b] EX6_2b.CPP。 6.1.3.3 关系运算符和逻辑运算符重载 重载运算的返回值不是定义该重载运算符的对象,而是一个代表 true 或 false 的整数值。 [例 6.2c] EX6_2c.CPP。 6.1.3.4 一元运算符的重载 重载一元运算符的成员函数没有参数。如++,--。 [例 6.2d] EX6_2d.CPP。 6.1.3.5 友元运算符重载 可以用友元函数重载运算符,但它与成员运算符函数的主要区别在于: (1) 参数个数不同。 (2) 成员函数通过 this 指针传递运算符左边的操作数,而友元函数则没有该指针,必 须显示传递所有参数。 注意:不能用友元函数重载赋值运算符,而只能用友元函数。 友元函数重载运算符,能够在运算中用对象激活 C++固有数据类型。 [例 6.2e] EX6_2e.CPP。 6.1.3.6 存储分配 通过对 new 和 delete 的重载,能够在其外部定义库函数的通用算法的基础上,提高特
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有