zoukankan      html  css  js  c++  java
  • C++构造函数使用的多种方法

    // classes and uniform initialization
    #include <iostream>
    using namespace std;
    
    class Circle {
        double radius;
      public:
        Circle(double r) { radius = r; }
        double circum() {return 2*radius*3.14159265;}
    };
    
    int main () {
      Circle foo (10.0);   // functional form
      Circle bar = 20.0;   // assignment init.
      Circle baz {30.0};   // uniform init.
      Circle qux = {40.0}; // POD-like
    
      cout << "foo's circumference: " << foo.circum() << '
    ';
      cout << "bar circumference: " << bar.circum() << '
    ';
      cout << "bazcircumference: " << baz.circum() << '
    ';
      cout << "qux circumference: " << qux.circum() << '
    ';
      return 0;
    }
    

      

    Rectangle rectb;   // default constructor called
    Rectangle rectc(); // function declaration (default constructor NOT called)
    Rectangle rectd{}; // default constructor called 
    

      

    Member initialization in constructors
    When a constructor is used to initialize other members, these other members can be initialized directly, without resorting to statements in its body. This is done by inserting, before the constructor's body, a colon (:) and a list of initializations for class members. For example, consider a class with the following declaration:

     

    class Rectangle {
    int width,height;
    public:
    Rectangle(int,int);
    int area() {return width*height;}
    };
    

    The constructor for this class could be defined, as usual, as:

    Rectangle::Rectangle (int x, int y) { width=x; height=y; }
    

    But it could also be defined using member initialization as:

    Rectangle::Rectangle (int x, int y) : width(x) { height=y; }
    

    Or even:

    Rectangle::Rectangle (int x, int y) : width(x), height(y) { }
    

    Note how in this last case, the constructor does nothing else than initialize its members, hence it has an empty function body.

  • 相关阅读:
    我败在了盲目和没有计划
    跟我一起学.NetCore目录
    跟我一起学.NetCore之依赖注入作用域和对象释放
    跟我一起学.NetCore之Asp.NetCore启动流程浅析
    std::unordered_map
    Android apps for “armeabi-v7a” and “x86” architecture: SoC vs. Processor vs. ABI
    android studio 配置相关问题
    shell script
    vscode配置
    linux常用命令笔记
  • 原文地址:https://www.cnblogs.com/CodeWorkerLiMing/p/11074537.html
Copyright © 2011-2022 走看看