正文

<C++语言命令详解>第七章:类的运算(操作符重载)2005-08-27 07:22:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/InnoLux/4189.html

分享到:

    除了非常少的几种特例外,用户几乎可以自定义所有的C++操作符。在每一个操作符出现的表达式里,都有一个相应的函数调用来计算该表达式的值,而这一函数又是根据操作符和操作数的类型来决定的。     对于某一操作符@,对应的操作符函数名称为: operator@。     函数所进行的操作是双操作数的(binary)还是单操作数的(unary)?     如果所进行的操作是双操作数的,是否支持操作对象出现在操作符任何一侧的情况?如果支持,则需要使用友元函数(friend)。     在编写双操作数操作符函数时,经常要使用关键字friend,这种情况下,一个双操作符只能用在两个操作数之间。如果不使用friend关键字,则只能在操作符的左侧使用类对象。     一般来说,类的全局函数不能访问该类的私有成员,但是friend的全局函数可以访问(操作符函数作为类的成员的情况下)。如果操作符函数在类之外定义,则不需要某个类才能调用,任何类都可调用。     赋值号(=)是一个特殊的操作符,如果没对它编写程序,编译器将提供一个隐含函数来实现它的功能。C++里有个普遍的规则,同种类型对象之间的赋值总是被支持的,它就是成员到成员的直接赋值。     在成员函数中,关键字this是一个指向当前对象的指针(这里所说的当前对象,是指主调函数通过该对象调用某一函数)。每次用户调用一个成员函数时,C++都把一个隐含的this指针传递给函数的参数。一个操作符函数是属于哪个操作数对象的,this指针就指向该对象,称当前对象。     引用操作(&)允许用户在对象之间传递数据(共享)而不必创建多余的拷贝,它也不必使用指针表达式。     类型转换函数。对于任何特定的类,类型转换函数处理向外的转换(转变为另外一个类型),而构造函数(本身具有类型转换功能)执行向内的转换(从其它类型转变为此类型)。类型转换函数定义:operator typename () ;如operator const char* () { return get();};。

阅读(3043) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册