C++ - 带默认参数的构造函数
构造函数是类中的一个特殊成员函数,在创建对象时会自动调用。构造函数用于使用值或默认设置初始化对象。
C++ 中的默认参数允许为函数或构造函数的参数指定默认值。
带默认参数的构造函数
带默认参数的构造函数允许使用可选参数创建对象。默认参数会提供参数的默认值,因此当用户未传递任何值时,将使用默认值。
语法
以下是带默认参数的构造函数的语法:
class ClassName { public: ClassName(parameter_Type parameter_Name = default_Value, parameter_Type2 parameter_Name2 = default_Value2); };
- 此处,构造函数与类同名
- 为一个或多个参数提供默认值。
- 如果用户未传递任何值,则将使用此默认值。
带有默认参数的构造函数示例
以下是带有默认参数的构造函数示例:
#include <iostream> using namespace std; // 带有默认参数的函数 void printMessage(string message = "Hello, Tutorialspoint Learner") { cout << message << endl; } int main() { // 不带参数调用函数 printMessage(); // 打印默认消息:"Hello, World!" // 带自定义参数调用函数 printMessage("Hi, there!"); // 打印自定义消息:"Hi, there!" return 0; }
输出
Hello, Tutorialspoint Learner Hi, there!
说明
- 创建了一个函数 printMessage() ,其参数默认值为"Hello, Tutorialspoint Learner"。
- 现在在 main() 函数中,printMessage() 函数被调用时不带任何参数,因此使用了默认参数"Hello, Tutorialspoint Learner"。
- 而在 printMessage("Hi, there!") 函数中,我们显式传递了值"Hi, there!",因此它将覆盖默认参数。
具有多个默认参数的构造函数
具有多个默认参数的构造函数允许用户为多个参数指定默认值。这提供了更大的灵活性,并允许用户传递任意参数组合。
示例
以下是具有多个默认参数的构造函数示例:
#include <iostream> using namespace std; class Box { public: int length, width, height; // 具有多个默认参数的构造函数 Box(int l = 5, int w = 10, int h = 2) { // Default values for length, width, and height length = l; width = w; height = h; } void display() { cout << "Length: " << length << ", Width: " << width << ", Height: " << height << endl; } }; int main() { // 创建具有不同数量参数的对象 Box box1; Box box2(15); Box box3(15, 20); Box box4(15, 20, 25); // 显示对象的值 box1.display(); box2.display(); box3.display(); box4.display(); return 0; }
输出
Length: 5, Width: 10, Height: 2 Length: 15, Width: 10, Height: 2 Length: 15, Width: 20, Height: 2 Length: 15, Width: 20, Height: 25
说明
- 首先,类 box 定义了三个公共成员变量:长度和宽度,其中构造函数 Box(int l = 5, int w = 10, int h = 2) 对所有三个参数都提供了默认参数。
- 在对象 Box box1; 中未提供任何参数,因此使用默认值调用默认构造函数,结果为"长度:5,宽度:10,高度:2"。
- 在Box box2(15); 中长度设置为 15,但未提供宽度和高度,因此分别使用默认值。
- 在 Box box3(15, 20); 中,长度和宽度分别设置为 15 和 20,因此它将覆盖默认值并产生相应的结果。
具有默认参数的构造函数的主要特性
虽然它与常规函数类似,但它在创建对象时提供了更大的灵活性和便利性。
下面我们将讨论它的所有主要特性。
1. 参数的默认值和对象创建的灵活性
此处,构造函数可以为一个或多个参数设置默认值,当调用者未提供参数时可以使用这些默认值,并允许多种创建对象的方式。
2.避免多次重载构造函数
您可能需要为每种参数组合加载构造函数,这会使代码更加臃肿,但使用默认参数,构造函数只需编写一次,即可自动处理不同的情况。
3. 默认参数的顺序
如果有多个默认值参数,则一旦从右侧开始提供默认值,就不能跳过中间的默认参数。
语法
Box(int l = 1, int w); // Invalid: 'w' has no default, but 'l' does.
4.默认参数可以与 Const 成员一起使用
如果您的类包含 const 成员,则可以在构造函数中提供默认参数,以简化初始化。
语法
class Box { public: const int length, width; Box(int l = 5, int w = 10) : length(l), width(w) {} };
此构造函数使用默认参数(长度 = 5 和宽度 = 10)来初始化 const 成员。