zoukankan      html  css  js  c++  java
  • Item 31. Covariant Return Types & Item 32. Preventing Copying

    Item 31. Covariant Return Types

    Covariant:随变,随动。(你变我就变)
    通常,一个overriding函数必须与所重写的函数具有相同的返回类型。然而,并非事事如此,Covariant Return Types便是无需如此。如下的继承体系:
    class Shape {
      public:
        //...
        virtual Shape *clone() const = 0; // Prototype
        //...
    };
    class Circle : public Shape {
      public:
        Circle *clone() const;  //Covariant Return Types
        //...
    };

    Shape 与 Circle 的clone成员函数的返回类型不同,但却可以正常运行。为何?
    Circle 是 Shape 的一个子类,所以Circle*可以自动的转换成为Shape*。这就为Covariant Return Types。

    Item 32. Preventing Copying

    若不声明copy构造函数,编译器会自动给加上一个。而有时候不想copy构造函数被调用,如何办?
    1)声明一个,但是私有的
    2)声明一个,但不实现。

    这两种方法都是从编译器的角度来控制的,使用了会编译不过。

  • 相关阅读:
    Lombok介绍、使用方法和总结
    Vargant centOS7安装
    Nginx
    Docker
    GOPATH
    Golang http
    /^正则表达式$/
    go: missing Git command. See https://golang.org/s/gogetcmd
    Golang 反射
    Golang 常量
  • 原文地址:https://www.cnblogs.com/aiwz/p/6333220.html
Copyright © 2011-2022 走看看