我有一个成员函数,它接受另一个对象的常量引用参数。我想 const_cast 这个参数以便在成员函数中轻松使用它。为此,以下哪个代码更好?:
void AClass::AMember(const BClass & _BObject)
{
// FORM #1 - Cast as an object:
BClass BObject = const_cast<BClass &>(_BObject);
// ...
}
void AClass::AMember(const BClass & _BObject)
{
// FORM #2 - Cast as a reference:
BClass & BObject = const_cast<BClass &>(_BObject);
// ...
}
你能比较一下这两种形式吗?哪个在速度和内存使用标准方面更好?
最佳答案
第一个版本复制对象。第二个版本没有。所以第二个版本会更快,除非你想复制。
顺便说一句,所有以下划线开头后跟大写字母的标识符都保留供编译器使用。您不应该使用像 _BObject
这样的变量名。
关于c++ - 有效地 const_cast-ing 常量引用参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8004283/