【发布时间】:2021-12-28 19:06:15
【问题描述】:
这是我想要做的:
-
具有两个对象的类(
string myStr和int myInt) -
构造函数接受1个参数(数据类型不固定)。
-
If参数为字符串:myStr = parameter; myInt = parameter.length(); -
If参数为整数:myInt = parameter; myStr = "0000...0"(长度为“参数”的字符串,由for循环设置) -
Else:cout << "Error";
是否可以按照我在第 2 行中描述的操作?
我已经设法仅使用字符串和转换数据类型(在为 myStr 的长度施加人为下限时能够做到这一点)做一些变通办法,但这会导致我进一步的其他问题。
【问题讨论】:
-
听起来你在问函数重载。您可以只提供两个构造函数,一个采用
int,另一个采用std::string,并根据需要实现它们。 -
你知道你可以定义多个构造函数吗?
-
关于
5.:你不应该为此做任何运行时输出。如果您尝试使用不受支持的构造函数参数类型来构造类实例,即,如果您没有为该类型编写构造函数,编译器将简单地使编译失败并显示错误消息,这比仅在运行时。 -
当然可以使用模板构造函数,它似乎能够满足这些要求,但是与为选项 3. 到 5. 定义 3 个重载相比,生成的代码只是不必要地复杂,此外还允许你会导致编译时错误而不是运行时错误 5....
标签: c++ types constructor