C++中构造函数的参数中如果右边的有初值,那么左边边的一定要赋初值吗
时间: 2024-02-25 18:54:41 浏览: 89
浅谈c++构造函数问题,初始化和赋值问题
如果 C++ 类的构造函数的参数中右边的参数有默认值,那么左边的参数可以不赋初值,但是如果左边的参数需要赋初值,则需要在构造函数的参数列表中显式地给它们赋值。如果有多个参数,可以使用逗号隔开。
举个例子,假设有一个类 `MyClass`,有一个构造函数:
```cpp
class MyClass {
public:
MyClass(int a, int b = 0) : m_a(a), m_b(b) {}
private:
int m_a;
int m_b;
};
```
在这个例子中,构造函数有两个参数,其中第二个参数 `b` 有默认值 0。如果你只传递一个参数,那么会使用默认值 0 来初始化 `m_b`,例如 `MyClass obj(1);`。如果你传递两个参数,则不会使用默认值,例如 `MyClass obj(1, 2);`。
总之,如果构造函数参数列表中右边的参数有默认值,则左边的参数可以不赋初值,但如果左边的参数需要赋初值,则需要在构造函数的参数列表中显式地给它们赋值。
阅读全文