在使用 C 的面向对象编程中,构造函数是初始化对象的特殊成员函数。虽然构造函数可以定义为模板,允许通用初始化行为,但通常需要在构造函数调用期间显式指定模板参数。
名为 A 的类就是一个简单的示例:
struct A { template<typename T> A() {} };
上面的代码定义了一个接受通用数据类型 T 的模板构造函数。但是,在调用此构造函数时,编译器通常依赖于所提供参数的类型推导。问题出现了:有没有办法显式指定构造函数的模板参数?
不幸的是,答案是否定的。根据 C 03 标准,“无法为这些函数模板提供显式模板参数列表。”这是因为显式模板参数列表跟在函数模板名称后面,并且在不使用函数名称的情况下调用转换成员函数模板和构造函数成员函数模板。
注意:此行为可能有所不同在较新版本的 C 中。请参阅您用于验证的特定 C 版本的标准或文档。
以上是在 C 中调用构造函数时可以显式指定模板参数吗?的详细内容。更多信息请关注PHP中文网其他相关文章!