constants相关内容
在C ++中声明和定义全局常量的最佳方法是什么?我对C ++ 11标准最感兴趣,因为它在这方面已经解决了很多。 [EDIT(clarification)]:在此问题中,“全局常量”表示常量在 any 范围内编译时已知的变量或函数。必须可以从多个翻译单元访问全局常数。它不一定是constexpr样式的常量-可以像 const std :: map m =
..
#include #include int main(){ //用constexpr 创建一个常数常量constexpr unsigned int speed_of_light {299792458}; //使用std :: integral_constant创建积分常数 typedef std :: integra
..
哪个更好: bool MyClass :: someQuery()const; const bool MyClass :: someQuery()const; 我一直在使用'const bool',因为我确定我记得听到它是“什么ints可以”(例如比较运算符),但我找不到任何地方的证据,主要是因为Google和Intellisense很难帮上忙;)有人可以确认吗?
..
在C ++中,有什么方法可以在初始化列表中包含类似临时变量的内容。我想使用某事物的相同实例初始化两个常量成员,而不必将该事物传入,删除const要求,使用一个Factory(即传入它,但由工厂生成以将其隐藏给API用户),或者 即 班巴兹{ const Foo f; const Bar b; Baz(参数p):temp(p),f(p,temp),b(p,temp){// te
..
我想知道是否有可能从const成员函数中调用非const成员函数。在下面的示例中,首先给出了编译器错误。我知道为什么会出现错误,我想知道是否有解决方法。 class Foo { const int& First()const { return Second(); } int& Second() { return m_bar; } int m_bar;
..
以下C ++ 11程序格式错误吗? const int x [] = {1,2, 3}; static_assert(x [0] == 1,“是”); int main(){} gcc和clang似乎这么认为,但为什么 x [0] == 1 不是常数表达式? x [0] == 1 下标运算符 *(x + 0)== 1 数组到指针的转换(i
..
在阅读用C ++编写的教程和代码时,我常常会偶然发现 const 关键字。 我知道 const int x = 5; 我知道这意味着 x 是一个常量变量,可能存储在只读存储器中。 但是什么是 void myfunc(const char x); 和 int myfunc()const; ? 解决
..
我一直在编写一组类,以实现简单的类似于python的 zip 函数。以下代码段(几乎)按预期工作。但是,两个变量 a 和 b 不是 const std :: vector。 v1 {0.0,1.1,2.2,3.3}; std :: vector v2 {0,1,2}; for(auto const& [a,b]:zip(v1,v2)) { st
..
任何仅包含return语句的函数都可以声明为 constexpr ,因此,如果所有 参数都可以在编译时进行求值是 constexpr ,并且仅在其主体中调用 constexpr 函数。 是否有任何理由不声明任何这样的函数 constexpr ? 示例: constexpr int sum(int x,int y){return x + y; } constexpr i = 1
..
在编写以下函数 abs 时,出现错误: 非成员函数 unsigned int abs(const T&)不能具有简历限定符。 template inline unsigned int abs(const T& t)const { return t> 0?t:-t; } 删除 const 该函数的限定符没有错误。由于我没有在函数内修改 t ,因
..
我一直遇到以下问题: std :: tuple some_tuple = std :: tuple(); for(int i = 0; i(temp_row)= some_value; } 不编译:(在xcode中)它说“没有匹配的函数调用
..
为什么STL容器定义访问器的const和非const版本? 定义 const T&有什么好处? at(unsigned int i)const 和 T& at(unsigned int)和非const版本? 解决方案 因为您不会不能在 const 矢量对象上调用 at 。 如果您只有非 const 版本,则以下内容: const std :: vector
..
是否允许以下内容: const int const_array [] = {42}; int may_inc(bool write,int * array){ if(write)array [0] ++; return array [0]; } int main(){ return may_inc(false,const_cast(const_
..
我想投放此内容: class Base { public: 虚拟〜Base(){}; }; 类Der:公共基础{}; int main() { const Base * base = new Der; Der * der = dynamic_cast(基本); //错误 返回0; } 我该怎么办? 我试着放: const
..
在 http://herbsutter.com中/ 2008/01/01 / gotw-88-a-candidate-for-the-最重要的const / 提到“最重要的const”,其中C ++特意指定将临时对象绑定到对堆栈上的const可以将临时对象的生存期延长到引用本身的生存期。我想知道为什么c ++仅在引用为const而不是非引用时才允许延长对象的寿命? 解决方案 下面是一个示例
..
我很好奇为什么可以在构造函数中修改const成员。 初始化中是否有任何标准规则可以覆盖成员的“ const-ness” ? struct Bar { const int b = 5; //默认成员初始化 Bar(int c):b(c){} }; Bar * b =新Bar(2); //问题:Bar :: b修改为2 //期望它是错误 有任何想法吗?
..
我正在阅读Eckel中的常量章节,并且在解释临时性部分中感到困惑。我能得到的是,当我们将引用传递给函数时,编译器会创建一个临时对象(即const对象),因此即使将引用传递为 $ b,我们也无法对其进行修改。 $ b f(int& a){} 现在,我试图在网上查看一些其他有关“临时人员”的参考资料,并陷入困境 http://publib.boulder.ibm.c
..
假设我有一个接受const引用参数传递的函数, int func(const int& i) { / * * / } int main() { int j = 1; func(j); //将非const参数传递给const引用 j = 2; //重新分配j } 此代码可以正常工作。根据C ++入门,这是什么传递给该函数的参数如下, in
..
在C ++ 0x中,可以创建一个constexpr std :: tuple,例如像 #include constexpr int i = 10; constexpr float f = 2.4f; constexpr double d = -10.4; constexpr std :: tuple tup(i,f,d)
..
我有一个抽象类,用于声明const和非const成员函数。为了便于讨论,我们将其看起来像这样: class record_interface { public: virtual 〜record_interface()=默认值; virtual void set_foo(BoundedFloat)= 0; virtual BoundedFloat get_foo()con
..