草庐IT

Constants

全部标签

c++ - boost::shared_ptr<const T> 到 boost::shared_ptr<T>

我想从boost::shared_ptr中转换常量,但我boost::const_pointer_cast不是答案。boost::const_pointer_cast想要一个constboost::shared_ptr,不是boost::shared_ptr.让我们放弃强制性的“你不应该那样做”。我知道...但我需要这样做...那么最好/最简单的方法是什么?为了清楚起见:boost::shared_ptrorig_ptr(newT());boost::shared_ptrnew_ptr=magic_incantation(orig_ptr);我需要知道magic_incantation

c++ - 使用初始化列表来初始化字段和在构造函数中初始化它们有什么区别?

在一些教程中(例如http://www.tutorialspoint.com/cplusplus/cpp_constructor_destructor.htm),我读到以下两个代码是等效的。第一个代码:classMyClass1{public:inta;intb;MyClass1(inta,intb):a(a),b(b){};};第二个代码:classMyClass2{public:inta;intb;MyClass2(int,int);};MyClass2::MyClass2(inta,intb){this->a=a;this->b=b;}事实上,他们给我的结果是一样的。但是,如果我

c++ - 将 float 转换为 int,还是将 int 转换为 float?

我可以将常量定义为float或32位uint:constfloatSecondsPerMinute=60.0F;或constuint32SecondsPerMinute=60U;const用在一些期望int的方程和一些期望float的方程中。我想让我的编译器和静态分析工具满意,所以我会根据需要将其static_cast为适当的类型。是将const定义为float并转换为int更好,还是将其定义为int并转换为float?这有什么不同,还是这更多是个人意见?假设常量与int和float的使用次数相同。 最佳答案 模板怎么样:templ

c++ - 将调用哪个重载版本的运算符

假设我在一个类中声明了下标运算符char&operator[](intindex);constcharoperator[](intindex)const;在什么情况下调用第二次重载。是否仅通过const对象调用。以下场景会调用哪个版本的operator。constcharres1=nonConstObject[10];nonConstObject[10]; 最佳答案 第一个被调用。不要被返回值弄糊涂了;只有参数被认为是选择方法。在这种情况下,隐式this是非常量,因此调用非常量版本。 关

c++ - 哪个是更好的做法 : global constant or #define?

这个问题在这里已经有了答案:关闭11年前。PossibleDuplicate:C++-enumvs.constvs.#define在使用#define之前,我曾在主函数中创建常量并将它们传递到需要的地方。我发现我经常传递它们,这有点奇怪,尤其是数组大小。最近我一直在使用#define,因为我不必将main中的常量传递给每个单独的函数。但现在我想到了,我也可以使用全局常量,但出于某种原因我一直对它们有点犹豫。哪个是更好的做法:全局常量或#define?还有一个相关的附带问题:如我所描述的那样从我的main传递常量是一种不好的做法吗?

c++ - "No match for operator="试图在 C++ 中遍历映射

我正在尝试遍历定义如下的map:std::map>ridx_;现在我尝试在以下重载运算符的友元函数中遍历ridx_(它是一个类的私有(private)成员)std::ostream&operator>::iteratorit;//Thefollowingisline34for(it=m.ridx_.begin();it!=m.ridx_.end();it++)osfirst但是g++错误输出:SMatrix.cpp:34:error:nomatchfor'operator='in'it=m->SMatrix::ridx_.std::map::beginwith_Key=unsigned

c++ - 在 C++ 中,使用 #define 还是 const 来避免魔数(Magic Number)更好?

使用#define优于const(反之亦然)有哪些优点和缺点?当我读到有关糟糕的编程实践(尤其是魔数(MagicNumber))时,我发现自己更频繁地使用#define。一些问题突然出现在我的脑海中,例如:大量使用#define不好吗?是否占用内存空间?使用const会更快吗?我读了一些关于这个的内容,但我仍然不确定,据我所知:#define定义了一个宏(不确定宏是什么意思),它处理预处理。在处理代码之前,它将已定义关键字的所有实例替换为其他内容。另一方面,const是变量,其值不能在运行时中途更改。我能想到使用const的唯一原因是该值是否依赖于其他变量。例如:#definePI3.

c++ - STL 迭代器和 'const'

当我使用迭代器时,我遇到了一个问题,似乎是对const的某种隐式转换。我不太确定哪个代码是相关的(如果我知道我可能不会问这个问题!)所以我会尽力说明我的问题。typedefsetContainer;//notconstvoidLargeObject::someFunction(){//notconstContainer::iteratorit;//notconstfor(it=c.begin();it!=c.end();++it){//assumecisa"Container"(*it).smallObjectFunction();//notaconstfunction}}但是我总是得

C++ const 语义引用

如果代码中有如下内容:func(constbase&obj)const语义是什么意思?这里的常数是什么?obj是对非常量对象的const引用还是对const对象的非常量引用? 最佳答案 没有“非常量”引用这样的东西,也就是说,引用总是绑定(bind)到同一个对象,而且没有办法改变它。"consttype&"表示对const类型的引用。 关于C++const语义引用,我们在StackOverflow上找到一个类似的问题: https://stackoverflo

c++ - 模板中的 "const const T"

以下代码可在G++4.4.0和MSVC2008Express上编译和运行。#includetemplatestructA{protected:Tv;public:constTget()const{returnv;}A(Tv_):v(v_){}};classB:publicA{public:voiddoSomething()const{constint*tmp=get();std::cout(p){}};intmain(intargc,char**argv){inta=134;Bb(&a);constB&c=b;b.doSomething();c.doSomething();return