参考 C++——overloading principle analysis

operator overloading

C语言中,对一个东西进行操作一定要涉及到一个函数,对于自定义类型,为了实现其四则运算你必须给出相应函数,而不能简单使用+=*/等operator。C++考虑到书写习惯,允许对operator进行overloading。事实上,C++中operator就是一种函数,允许你重新定义。operator overloading可以有如下形式

member function

operator会做用到左边object身上,看左边oobject有没有对这个operator做定义。所有的Non-static member function都隐藏包含一个this pointer,用于表明谁发起的这个function call。上图显示this放在了parameters list最左边,现实情况可能不是这样,到底是放在最左边还是最右边还是放在中间什么位置,是由compiler自己决定。但是无论怎样,与programmer都无关,不影响coding。

Non-member function

friend function

参考:C++——friend

overloading写在哪里影响不大,主要是策略问题。还是不推荐friend的做法。

global function

参考:C++——friend

overloading写在哪里影响不大,主要是策略问题。

static function 

overloading写在哪里影响不大,主要是策略问题。

这里面使用static其目的是想把overloading封锁在单个文件内部,这种情况几乎碰不到。

极少数不允许overloading的operator

C++——overloading的更多相关文章

  1. [c++] Operator overloading

    c++的操蛋属性:自己为一档,空一档,其他随意. UB_stack a; UB_stack b = a; // copy auto c = a; auto d {a}; // (or auto d = ...

  2. javascript 函数重载 overloading

    函数重载 https://en.wikipedia.org/wiki/Function_overloading In some programming languages, function over ...

  3. Java 重写(Overriding)和重载(Overloading)

    方法的重写(Overriding)和重载(Overloading)是java多态性的不同表现. 重写是父类与子类之间多态性的一种表现 重载是一类中多态性的一种表现.

  4. Effective Java 41 Use overloading judiciously

    The choice of which overloading to invoke is made at compile time. // Broken! - What does this progr ...

  5. Java基础--重写(Overriding,覆盖)-重载(Overloading)

    多态性: Java的方法重载,就是在类中可以创建多个方法,它们具有相同的名字,但具有不同的参数和不同的定义.调用方法时通过传递给它们的不同参数个数和参数类型来决定具体使用哪个方法 Java的方法重写, ...

  6. overloading

    Computer Science An Overview _J. Glenn Brookshear _11th Edition_C Many programming languages allow t ...

  7. Operator overloading

    By defining other special methods, you can specify the behavior of operators on user-defined types. ...

  8. [置顶] operator overloading(操作符重载,运算符重载)运算符重载,浅拷贝(logical copy) ,vs, 深拷贝(physical copy)

    operator overloading(操作符重载,运算符重载) 所谓重载就是重新赋予新的意义,之前我们已经学过函数重载,函数重载的要求是函数名相同,函数的参数列表不同(个数或者参数类型).操作符重 ...

  9. Method Overloading in WCF zt

    Method overloading is the process of implementing Polymorphism in Object-Oriented Programming. A met ...

  10. Polymorphism & Overloading & Overriding

    In Java, a method signature is the method name and the number and type of its parameters. Return typ ...

随机推荐

  1. html如何修改hr水平直线的粗细

    hr是常见的超文本标签,是一条水平直线,要设置该直线变粗一些.可以先把hr本身的border隐藏掉,然后设置border-top-width,也就是只留上边框,如图:hr的默认高度height是0,所 ...

  2. 看看该死的jquery.form.js的用法,不是个东西

    $("#btnReg").click(function () { var options = { //target: '#output', // 把服务器返回的内容放入id为out ...

  3. AI - H2O - 第一个示例

    1 - Iris数据集 Iris数据集是常用的机器学习分类实验数据集,特点是数据量很小,可以快速学习. 数据集包含150个数据集,分为3类,每类50个数据,每个数据包含4个属性. Sepal.Leng ...

  4. swift 日历的制作

    制作日历步骤 1.日期数据的处理,这个可以 添加 extension 解决 extension NSDate{ /*几年几月 这个月的多少天*/ class func getDaysInMonth( ...

  5. linux 安装 rpm 的jdk

    1.下载 JDK 路径:http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html 下载 j ...

  6. Samba访问控制smb.conf

    访问控制 Samba的访问控制通过hosts allow(配置允许访问的客户端).hosts deny(配置拒绝访问的客户端)两个参数实现. 在Samba中使用hosts allow.hosts de ...

  7. 修改 ubuntu NTFS 文件系统下没有执行权限的问题

    由于NTFS本身的特殊性,不能对其分区的文件权限进行修改,无论是sudo还是root都没有用. 安装以下两个插件解决问题: sudo apt-get install ntfs-3g //这个12.04 ...

  8. Kubernetes(k8s)目录

    Kubernetes(k8s)目录 Kubernetes集群安装(亲测有效)

  9. 《Mysql - Count(*) 的优化》

    一:Count(*) 的实现方式? - 要明确的是,在不同的 MySQL 引擎中,count(*) 有不同的实现方式. - MyISAM 引擎把一个表的总行数存在了磁盘上,因此执行 count(*) ...

  10. todo---java中的json探讨

    1.json的命名格式 2.json赋值原则 3.json常用的工具 4.json的处理的第三方软件比较 5.json的起源 6.关于json串的对于null ,"" 的不同的第三 ...