C++中可使用参数为不同数据类型的构造函数初始化类对象吗?
问题解答
关于多类型参数构造函数的支持情况
C完全支持入参为不同数据类型的构造函数,你声明三参数不同类型构造函数的写法本身符合C语法规则。
代码运行失败的原因
- 缺少必要的头文件和命名空间声明:代码中使用了
string类型,但未引入<string>头文件,也没有指定string属于std标准命名空间,编译器无法识别string类型。 - 构造函数仅声明未实现:你只在类内声明了三参数构造函数,没有给出具体的函数实现逻辑,链接阶段会因为找不到构造函数的定义抛出错误。
修正后的可运行代码
#include <iostream> #include <string> class test { public: int a; std::string b; float c; // 实现构造函数,用初始化列表完成成员赋值 test(int x, std::string y, float z): a(x), b(std::move(y)), c(z) {} }; int main() { test t1(10, "Hello", 2.5f); // 验证初始化结果 std::cout << t1.a << " " << t1.b << " " << t1.c << std::endl; return 0; }
内容的提问来源于stack exchange,提问作者Free-Man
相关产品推荐
相关产品推荐

