WEB开发网
开发学院软件开发C++ 关于C++里const的pitfall 阅读

关于C++里const的pitfall

 2010-12-03 07:21:59 来源:WEB开发网   
核心提示: const_cast<myRemoteRule*>(this)->strName = getNameFromRemote("rule-server" ); } return strName.c_str();}这只是一个小CASE, 实际正常的CLASS都有很多数据成员和函数

   const_cast<myRemoteRule*>(this)->strName = getNameFromRemote("rule-server" );

  }

  return strName.c_str();

}

这只是一个小CASE。 实际正常的CLASS都有很多数据成员和函数成员。 如果需要翻很多墙, 整个CODE 都会充满了const_cast. 实际情况有可能是很复杂的, 看了一个函数的定义就说它一定是const是把世界看得太简单了。另外, 说const就能优化也是一种理解错误。 C++书上说const 常数可以直接替代, 以及常数字符串可以优化, const 函数并不能优化。 实际上由于const_cast的存在, 编译器必须把const指针当成non const, 因为无法预知这是否会修改。 比如:

const char* name = rule.Name(); 

... 100 lines later

const_cast<char*>(name)[0] = 'P';

这段CODE完全合法。

 

上一页  1 2 

Tags:关于 const pitfall

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接