C++编程规范之26:保持重载操作符的自然语义

摘要:

    程序员讨厌意外情况:只在有充分理由时才重载操作符,而且应该保持其自然语义;如果做到这一点很困难,那么你可能已经误用了操作符重载。

    虽然任何人都会同意不应该在operator+的实现中实现减法操作,但是还有另外一些微妙的情况存在。应该保持操作符正常的语义,这样的程序才能保证别的人员能读懂你的程序,否则你的程序只有你自己能读懂。

时间: 2024-10-26 21:50:52

C++编程规范之26:保持重载操作符的自然语义的相关文章

C++编程规范之30:避免重载&&,||或,(逗号)

摘要:     明智就是知道合适适可而止:内置的&&,||和,(逗号)得到了编译器的特殊照顾.如果重载它们,它们就会变成普通函数,具有完全不同的语义(这将违反地26条:保持重载操作符的自然语义和第31条:不要编写依赖函数参数求值顺序的代码),这肯定会引入微妙的错误和缺陷.不要轻率地重载这些操作符.     不能重载operator&&.operator||或者operator,的主要原因是,无法在三种情况下实现内置操作符的完整语义,而程序员通常都会需要这些语义.说的更具体一

JAVA 编程规范

编程|规范 1. 应用范围 本规范应用于采用J2EE规范的项目中,所有项目中的JAVA代码(含JSP,SERVLET,JAVABEAN,EJB)均应遵守这个规范.同时,也可作为其它项目的参考. 2. 设计类和方法 2.1 创建具有很强内聚力的类 方法的重要性往往比类的重要性更容易理解,方法是指执行一个统一函数的一段代码.类常被错误的视为是一个仅仅用于存放方法的容器.有些开发人员甚至把这种思路作了进一步的发挥,将他们的所有方法放入单个类之中. 之所以不能正确的认识类的功能,原因之一是类的实现实际上

IDesign C#编程规范(一)

编程|规范 IDesign发布了C#编程规范,小鸡射手从Only4Gurus下载浏览后决心抽时间翻译一下,以更好地学习. 目录内容如下: 1 命名规则和风格 Naming Conventions and Style 2 编码惯例 Coding Practices 3 项目设置和结构 Project Settings and Structure 4 Framework特别指导 Framework Specific Guidelines 4.1 数据访问 Data Access 4.2 ASP.NE

IDesign C#编程规范(二)

编程|规范 续之一,小鸡射手接着翻译了IDesign编码规范的第二章前部. 2 编码惯例 Coding Practices 1. 避免在一个文件中放多个类. Avoid putting multiple classes in a single file. 2. 一个文件应该只对一个命名空间提供类型.避免在同一文件中有多个命名空间. A single file should only contribute types to a single namespace. Avoid having mult

大话数据库编程规范

1.1 前言 目前在软件圈内有这么一个现象,就是:DBA不太懂写PL/SQL,而开发人员写的又是五花八门,而且效率不高.如此以来,造成诸多弊端: 1.可读性差.读别人写的一个程序花费的时间,比自己写一个程序的花费时间还要长:非但别人看不懂,时间久了连自己也看不懂了. 2.可维护性差.程序越写越长,越改越烂,像懒婆娘的裹脚布,又臭又长. 3.可移植性差.今天用oracle写一套,明天换成SQL Server的时候再写一套,众多的数据库开发人员在程序的苦海中重复着低级劳动-- 4.效率和性能差.一个

Oracle PL/SQL编程规范指南

一.PL/SQL编程规范之大小写 就像在SQL中一样,PL / SQL中是不区分大小写的.其一般准则如下: 关键字(BEGIN, EXCEPTION, END, IF THEN ELSE,LOOP, END LOOP).数据类型(VARCHAR2, NUMBER). 内部函数(LEAST, SUBSTR)和用户定义的子程序(procedures, functions,packages),使用大写. 变量名以及SQL中的列名和表名,使用小写. 二.PL/SQL编程规范之空白 空白(空行和空格)在P

C++中重载+操作符的正确方法

摘要:本文概要性地介绍如何选择正确的策略来为用户定义类型重载 + 操作符. 用户定义的类型,如:字符串,日期,复数,联合体以及文件常常重载二元 + 操作符以实现对象的连接,附加或合并机制.但是要正确实现 + 操作符会给设计,实现和性能带来一定的挑战.本文将概要性地介绍如何选择正确的策略来为用户定义类型重载这个操作符. 考虑如下的表达式:int x=4+2; 内建的 + 操作符有两个类型相同的操作数,相加并返回右值 6,然后被赋值给 x.我们可以断定内建的 + 是一个二元的,对称的,可交换的操作符

C++ 中重载操作符的设计方法

用户定义的类型,如:字符串,日期,复数,联合体以及文件常常重载二元 + 操作符以实现对象的连接,附加或合并机制.但是要正确实现 + 操作符会给设计,实现和性能带来一定的挑战.本文将概要性地介绍如何选择正确的策略来为用户定义类型重载这个操作符. 考虑如下的表达式: int x=4+2; 内建的 + 操作符有两个类型相同的操作数,相加并返回右值 6,然后被赋值给 x.我们可以断定内建的 + 是一个二元的,对称的,可交换的操作符.它产生的结果的类型与其操作数类型相同.按照这个规测,当你为某个用户定义类

C++重载操作符的设计方法

用户定义的类型,如:字符串,日期,复数,联合体以及文件常常重载二元 + 操作符以实现对象的连接,附加或合并机制.但是要正确实现 + 操作符会给设计,实现和性能带来一定的挑战.本文将概要性地介绍如何选择正确的策略来为用户定义类型重载这个操作符. 考虑如下的表达式: int x=4+2; 内建的 + 操作符有两个类型相同的操作数,相加并返回右值 6,然后被赋值给 x.我们可以断定内建的 + 是一个二元的,对称的,可交换的操作符.它产生的结果的类型与其操作数类型相同.按照这个规测,当你为某个用户定义类