gpt4 book ai didi

c++ - 如何设置默认参数 如果用户没有输入另一个参数

转载 作者:行者123 更新时间:2023-12-01 14:39:20 24 4
gpt4 key购买 nike

#include <iostream>

class Person {
friend std::ostream &operator<<(std::ostream &os, const Person &person);
std::string name;
int age;
public:
std::string get_name () {return name;}
int get_age() {return age;}
Person() : name{"Unknown"}, age{0} {}
Person(std::string name, int age) : name{name}, age{age} {}
};

std::ostream &operator<<(std::ostream &os, const Person &person) {
os << person.name << ": " << person.age;
return os;
}

int main () {
Person Austin{"Austin", 12};
}

我试图在我输入“Austin”的地方输入我的名字,但如果我不输入年龄,它会自动将其设为 0,因为我没有输入年龄。

最佳答案

从 C++11 开始,您可以利用 委托(delegate)构造函数 : 你可以提供一个额外的构造函数重载,它只需要一个 std::string对于名称并委托(delegate)给接受两个参数的现有构造函数,std::stringint .然后,只需通过 0作为委托(delegate)构造函数的第二个参数:

Person(std::string name) : Person(name, 0) {}

也就是说, Person(std::string)将是委托(delegate)构造函数,而现有的 Person(std::string, int)委托(delegate)的。

另一种方法是使用 默认参数 对于现有构造函数的第二个参数,它同时接受 std::stringint :
Person(std::string name, int age = 0) : name{name}, age{age} {}

后一种方法的缺点是默认参数总是直接在客户端代码中编译。这将使得在默认参数更改时重新编译客户端代码成为必要。

关于c++ - 如何设置默认参数 如果用户没有输入另一个参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62024784/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com