【发布时间】:2018-12-07 14:19:30
【问题描述】:
我最近开始研究使用 C++Builder (Borland) 构建的旧解决方案。
我遇到了允许一些意外操作的代码。
1) 将 int 赋值给 String 而不进行转换:
String x = 12; //this works... I would expect a type mismatch..
2) String 与 int 的比较没有问题:
String s = "12";
int x = 12;
bool b = s == x; // Again... I expect an error..
C++Builder 会做一些自动转换吗? 是否有针对 C++Builder 的“我不敢相信他们会这样做”的列表?
【问题讨论】:
-
什么是
String?它不是标准的 C++ 类型。 -
Borland“标准”字符串类(不要与 C++ 标准
std::string类混淆)通常允许从整数类型进行隐式转换,因为它们具有非显式构造函数。 -
IMO,很多关于 C++Builder 的问题都倾向于使用 C++Builder 和 Delphi 特定的类型。我不会使用通用 C++ 标签,只使用 C++Builder 标签。那么就不会出现这样的问题了。这是一个关于 C++Builder 的字符串的问题,所以无论如何都不是一般的 C++ 问题。
标签: c++ string c++builder