在C++中,類成員的初始化順序是按照它們在類中聲明的順序進行的,而不是按照初始化列表中的順序。在類的構造函數中,初始化列表中的成員變量的初始化順序并不會影響實際初始化順序,而是按照它們在類中聲明的順序進行初始化。
例如,考慮以下示例代碼:
#include <iostream>
class MyClass {
public:
MyClass(int a, int b) : b_(b), a_(a) {}
void print() {
std::cout << "a: " << a_ << ", b: " << b_ << std::endl;
}
private:
int a_;
int b_;
};
int main() {
MyClass obj(10, 20);
obj.print();
return 0;
}
在上面的示例中,類MyClass
中有兩個成員變量a_
和b_
,它們的初始化順序是按照它們在類中聲明的順序進行的,而不是按照構造函數的初始化列表中的順序。因此,a_
會先于b_
被初始化,即使在構造函數的初始化列表中把b_
放在了a_
前面。