C++构造函数使用的多种方法

2020-12-13 03:24

阅读:317

标签:rect   init   form   mes   space   radius   following   directly   body   

// classes and uniform initialization
#include 
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 

  

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.

C++构造函数使用的多种方法

标签:rect   init   form   mes   space   radius   following   directly   body   

原文地址:https://www.cnblogs.com/CodeWorkerLiMing/p/11074537.html


评论


亲,登录后才可以留言!