草庐IT

CONSTANTS

全部标签

c++ - 参数前的 const 与函数名后的 const C++

这样的东西有什么区别friendCirclecopy(constCircle&);类似的东西friendCirclecopy(Circle&)const;在函数用于告诉编译器该函数不会尝试更改它所调用的对象后,我知道const,那么另一个呢? 最佳答案 第一种形式表示(状态)Circle对象绑定(bind)到作为copy()参数的引用copy()不会改变函数通过那个引用。引用是对const的引用,因此无法调用Circle的成员函数通过该引用本身不符合const.另一方面,第二种形式是非法的:只有成员函数可以是const-qualif

c++ - 我可以在 vector 中使用 const 来允许添加元素,但不能修改已添加的元素吗?

我对thisanswer的评论让我想到了constness和排序的问题。我玩了一下,将我的问题减少到以下代码:#includeintmain(){std::vectorv;}不会编译-你不能创建一个constint的vector。显然,我应该知道这一点(并且在智力上我做到了),但我以前从来不需要创造这样的东西。但是,这对我来说似乎是一个有用的构造,我想知道是否有任何方法可以解决这个问题-我想将东西添加到vector(或其他),但一旦添加就不应更改它们。可能有一些令人尴尬的简单解决方案,但这是我以前从未考虑过的。我可能不应该提到排序(我可能会问另一个问题,请参阅this以了解提问的困难)

c++ - 我可以在 vector 中使用 const 来允许添加元素,但不能修改已添加的元素吗?

我对thisanswer的评论让我想到了constness和排序的问题。我玩了一下,将我的问题减少到以下代码:#includeintmain(){std::vectorv;}不会编译-你不能创建一个constint的vector。显然,我应该知道这一点(并且在智力上我做到了),但我以前从来不需要创造这样的东西。但是,这对我来说似乎是一个有用的构造,我想知道是否有任何方法可以解决这个问题-我想将东西添加到vector(或其他),但一旦添加就不应更改它们。可能有一些令人尴尬的简单解决方案,但这是我以前从未考虑过的。我可能不应该提到排序(我可能会问另一个问题,请参阅this以了解提问的困难)

c++ - 返回临时对象并绑定(bind)到 const 引用

这个问题在这里已经有了答案:关闭10年前.PossibleDuplicate:Doesaconstreferenceprolongthelifeofatemporary?我的编译器不会提示将临时分配给const引用:stringfoo(){returnstring("123");};intmain(){conststring&val=foo();printf("%s\n",val.c_str());return0;}为什么?我认为从foo返回的字符串是临时的,并且val可以指向生命周期已结束的对象。C++标准是否允许这样做并延长返回对象的生命周期? 最佳答案

c++ - 返回临时对象并绑定(bind)到 const 引用

这个问题在这里已经有了答案:关闭10年前.PossibleDuplicate:Doesaconstreferenceprolongthelifeofatemporary?我的编译器不会提示将临时分配给const引用:stringfoo(){returnstring("123");};intmain(){conststring&val=foo();printf("%s\n",val.c_str());return0;}为什么?我认为从foo返回的字符串是临时的,并且val可以指向生命周期已结束的对象。C++标准是否允许这样做并延长返回对象的生命周期? 最佳答案

c++ - C 和 C++ 中的字符串文字的类型是什么?

C中字符串字面量的类型是什么?是char*还是constchar*还是constchar*const?C++呢? 最佳答案 在C中,字符串文字的类型是char[]-根据类型,它不是const,但修改内容是未定义的行为。此外,具有相同内容(或足够多的相同内容)的2个不同的字符串文字可能共享也可能不共享相同的数组元素。来自C99标准6.4.5/5“字符串文字-语义”:Intranslationphase7,abyteorcodeofvaluezeroisappendedtoeachmultibytecharactersequenceth

c++ - C 和 C++ 中的字符串文字的类型是什么?

C中字符串字面量的类型是什么?是char*还是constchar*还是constchar*const?C++呢? 最佳答案 在C中,字符串文字的类型是char[]-根据类型,它不是const,但修改内容是未定义的行为。此外,具有相同内容(或足够多的相同内容)的2个不同的字符串文字可能共享也可能不共享相同的数组元素。来自C99标准6.4.5/5“字符串文字-语义”:Intranslationphase7,abyteorcodeofvaluezeroisappendedtoeachmultibytecharactersequenceth

c++ - C/C++ 中的 const 数组和静态 const 数组有什么区别

在VisualStudio2015(Win7、x64、Debug配置)中编译以下代码需要非常、非常、非常很长时间(即超过10分钟)doubletfuuuuuuu(intInd){constdoubleArr[600*258]={3.5453,45.234234234,234234.234,//extendsto258valuesforeachline//599lineshere.....};returnArr[Ind];}但是当我添加static关键字时,编译需要半秒钟doubletfuuuuuuu(intInd){staticconstdoubleArr[600*258]={3.54

c++ - C/C++ 中的 const 数组和静态 const 数组有什么区别

在VisualStudio2015(Win7、x64、Debug配置)中编译以下代码需要非常、非常、非常很长时间(即超过10分钟)doubletfuuuuuuu(intInd){constdoubleArr[600*258]={3.5453,45.234234234,234234.234,//extendsto258valuesforeachline//599lineshere.....};returnArr[Ind];}但是当我添加static关键字时,编译需要半秒钟doubletfuuuuuuu(intInd){staticconstdoubleArr[600*258]={3.54

c++ - 没有for或while的构造函数中的无限循环

我这里做了一个测试,但是输出的是一个没有结束的循环,不知道为什么。其实我在做另一个测试,但是当我写这个的时候,我不明白循环是怎么发生的。反复输出“ABC”。#include#include#includeclasstest{public:std::map_b;test();test(std::map&im);~test();};test::test(){std::cout&im){std::cout 最佳答案 这里的问题是编译器会解释语句test(_b);不是作为创建test类型的临时对象并传入参数_b的代码,而是作为名为_b的变量