关键字使用的功能是什么?
What is the functionality of the keyword using?
我对C++相当陌生,正在尝试理解关键字"using"的功能。我只是不明白何时以及为什么要使用它。
例如,我有以下代码:
using connection_status_t = bool;
connection_status_t isFileOpenForInput(ifstream& ifs, const string& filename) {
ifs.open(filename);
return ifs.is_open();
}
对于这个具体的例子,我为什么不能做这样的事情:
bool connection_status_t;
bool isFileOpenForInput(ifstream& ifs, const string& filename) {
ifs.open(filename);
return ifs.is_open();
}
顶部示例中connection_status_t
是一个类型别名- 它是类型bool
的另一个名称。
为什么我不能做这样的事情:
你给出的第二个示例不是一回事,因为connection_status_t
实际上是该代码中的一个变量。所以你可以这样做,但这意味着不同的东西。 如果你省略bool connection_status_t;
那么这将是一个类似的例子。
为了达到问题的重点,类型别名用于通过为内置类型提供人类理解的语义含义来提高代码可读性。connection_status_t
告诉我,返回值将指示连接的状态,只需查看代码即可。bool
没有给我任何关于返回值可能指示什么的线索,它只通知我返回值的域。
类型别名还可用于确保在代码库中使用相同的类型,其中实际类型稍后可以换成兼容的类型。例如,可以有using id_set_t = std::set<std::string>;
,然后将其更改为std::unordered_set<std::string>
. 这只需要更改类型别名;所有使用id_set_t
的东西都会突然开始使用新类型,而不必寻找该类型的所有用法。
你可以使用是正常的方式。
如果您以后想切换类型,建议使用。在您的示例中,您以后可能希望切换bool
使用枚举:
enum connection_status_t
{
failed = 0,
success = 1,
no_result = 2
}
简单来说:使用是一种别名系统。您也可以将其用于命名空间中的类/类型/结构等,以缩写某些内容:
using ::namespace::class
这样,您就不必编写整个命名空间。
相关文章:
- 文件系统:复制功能的速度秘诀是什么
- c++20[[no.unique_address]]中的新功能是什么
- 这个Arduino睡眠设置的周边是什么警报功能?
- 这种错误的原因是什么:将"功能"重新定义为不同类型的符号
- 关键字使用的功能是什么?
- 引用 using 声明引入的功能的句子是什么意思?
- 共享_ptr中多功能数组的类型是什么
- 为什么BOOST :: HANA :: EXAREMIS ::键入实验功能?类型列表的棘手是什么
- 不允许功能模板的部分专业化背后的理由是什么?
- 在 C++ 中直接为 FOR 循环提供的 " ; " 的功能是什么?
- C++不支持非成员虚拟功能的原因是什么?
- 是什么导致程序在我继续执行另一个功能之前停止
- & 字符在重载 std::cout 中的功能是什么?
- 当我运行此C 程序时,该功能是什么
- 在 LLVM 中,调用中函数的位播"type"是什么?如何访问此功能?
- 导出()在QMake中的"inverse"功能是什么?
- 在Linux上构建具有链接时代码生成功能的静态库的正确方法是什么
- 通过回调功能,打破一个循环的最佳方法是什么?
- 该功能检测循环链接列表的时间复杂性是什么?
- 对于一对碰撞机会较低的INT的最小哈希功能是什么