通过非常量指针修改常量
我对以下代码中发生的事情有点困惑: const int e = 2; int* w = ( int* ) &e; // (1) cast to remove const-ness *w = 5; // (2) cout << *w << endl…
成员函数什么时候应该有 const 限定符,什么时候不应该有?
大约六年前,一位名叫 Harri Porten 的软件工程师写了这篇文章,询问问题,“成员函数什么时候应该有 const 限定符,什么时候不应该有?”我发现这是…
将基本(非指针)参数设置为常量是否有意义?
最近我和另一位 C++ 开发人员就 const 的如下使用进行了交流: void Foo(const int bar); 他觉得这样使用 const 是一个很好的做法。 我认为它对函数的…
如何返回“只读”向量的副本
我有一个类,它有一个私有属性向量 rectVec; class A { private: vector rectVec; }; 我的问题是如何返回矢量的“只读”副本? 我正在考虑这样做: c…
为什么我在转换“float**”时出错到“const float**”?
我有一个接收 float** 作为参数的函数,我尝试将其更改为采用 const float**。 编译器(g++)不喜欢它并发出: invalid conversion from 'float**' to…
复数返回值的常量正确性
结构体 Foo { 字符 * 数据指针; }; class ISomeInterface { public: Foo GetFoo( ) const; Foo GetFoo( ); }; Foo::DataPtr 是指向ISomeInterface 对…
从“foo”转换为到“const foo” - C++
我有一个类似的函数(请不要关心通过引用返回临时值。这只是解释问题的示例), const foo& get_const() { foo f; return f; } 这显然无法编译。我正…
将 boost::Optional 与常量类型一起使用 - C++
我有一个容器类,它使用 boost::Optional 来保存该值。代码如下所示, template struct traits { typedef T value_type; typedef T& reference; }; te…
在 C++ 中使用特征
这个问题与我的上一个问题相关。我正在尝试使用 traits 和 traits 解决问题。请考虑以下代码。 template struct traits { typedef const T& const_ref…
const 正确性和返回值 - C++
请考虑以下代码。 struct foo { }; template class test { public: test() {} const T& value() const { return f; } private: T f; }; int main() { …
通过指向 const 的指针释放内存是一个好习惯吗
有很多问题讨论 C 和 C++ 处理指针常量删除的细节,即 free() 不接受它们以及 delete 和 delete[] 会执行此操作,并且常量性不会阻止对象销毁。 我感…
为什么将“指针到非常量指针”转换为不合法?指向“指向 const 指针的指针”
将非常量指针转换为常量指针是合法的。 那么为什么将指向非 const 的指针转换为指向 const 的指针是不合法的呢? 例如,为什么下面的代码是非法的: c…
如何在模板函数签名中要求 const_iterator 语义?
我正在创建一个构造函数,它将采用一对输入迭代器。我希望方法签名具有类似于以下内容的编译时 const 语义: DataObject::DataObject(const char *beg…