关于constructor函数的定义

关于constructor函数的定义

class Request
{
private:
    const int no;
    static unsigned int lastNo;
    Accomodation *accomodation;
    Request *next;

public:
    Request(Accomodation *);
    ~Request();
    int get_no();
    Request *get_next();
    Request *set_next(Request &r);
    float get_price();
    void print();
};
unsigned int Request::lastNo = 0;

Request::Request(Accomodation *a) : accomodation(a), next(nullptr), no(++lastNo)
{
    lastNo = no;
}

以上这个构造函数的定义和下面这个构造函数的定义有何区别,为什么下面这种方式无法运行,且:后面初始化部分难道不是一种函数思维去进行吗?

Request::Request(Accomodation *a)
{
    accomodation = a;
    next = nullptr;
    no = ++lastNo;
}

非常感谢各位解答!

你问的这个问题非常好,这个是C++ 构造过程最重要的性能问题。
在初始化列表中的变量初始化,和构造函数中的变量初始化,完全不是一个概念。
初始化列表中那叫初始化,构造函数中,那叫赋值

你问的这个问题非常好,这个是C++ 构造过程最重要的性能问题。
在初始化列表中的变量初始化,和构造函数中的变量初始化,完全不是一个概念。
初始化列表中那叫初始化,构造函数中,那叫赋值