C++中构造函数的参数缺省的详解
在C++中,我们可以为构造函数设置参数缺省值,使得在实例化对象时可以省略某些参数,也可以在某些场合给构造函数更灵活的设置。
构造函数参数缺省的语法格式
为构造函数设置参数缺省值的语法格式如下:
class 类名{
public:
类名(参数列表 = 缺省值);
...
};
构造函数的参数列表可以设置一个或多个缺省值,缺省值也可以设置在一个或多个参数上。
构造函数的参数缺省的用法
示例 1
下面的代码展示了一个有参数缺省值的构造函数的用法。
#include <iostream>
using namespace std;
// 定义一个person类
class person{
public:
person(string n = "noname", int a = 0){
name = n;
age = a;
}
// 声明类的公有方法
void say(){
cout << "my name is " << name << ", and I'm " << age << " years old." << endl;
}
private: // 定义类的私有成员
string name;
int age;
};
int main(){
// 使用默认参数构造实例对象
person p1;
p1.say();
// 使用部分参数构造实例对象
person p2("John");
p2.say();
// 构造多个实例
person p3("Tom", 18);
p3.say();
person p4("Alice", 22);
p4.say();
return 0;
}
输出结果:
my name is noname, and I'm 0 years old. // p1使用默认参数构造
my name is John, and I'm 0 years old. // p2使用第一个参数缺省,从而实例化为John,年龄为0
my name is Tom, and I'm 18 years old.
my name is Alice, and I'm 22 years old.
示例 2
下面的代码展示了多个参数的缺省值的构造函数的用法。
#include <iostream>
using namespace std;
// 定义一个汽车类
class car{
public:
car(string b = "brand", string c = "color", int p = 0){
brand = b;
color = c;
price = p;
}
// 声明类的公有方法
void info(){
cout << "brand: " << brand << ", color: " << color << ", price: " << price << " dollars" << endl;
}
private: // 定义类的私有成员
string brand;
string color;
int price;
};
int main(){
// 使用默认参数构造实例对象
car c1;
c1.info();
// 使用部分参数构造实例对象
car c2("Tesla");
c2.info();
// 构造多个实例
car c3("BMW", "black");
c3.info();
car c4("Audi", "red", 20000);
c4.info();
return 0;
}
输出结果:
brand: brand, color: color, price: 0 dollars // c1使用默认参数构造
brand: Tesla, color: color, price: 0 dollars // c2使用第一个参数缺省,从而实例化为Tesla,颜色为默认值,价格为0
brand: BMW, color: black, price: 0 dollars
brand: Audi, color: red, price: 20000 dollars
总结
使用C++中的构造函数参数缺省值可以使得构造函数在实例化对象时更加灵活和方便,并可以省略某些参数的赋值过程,提高代码的可读性和代码重用性。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C++中构造函数的参数缺省的详解 - Python技术站