草庐IT

const_buffers

全部标签

c++ - 为某些函数创建类 const 的一些私有(private)成员

我有一个名为myClass的类:myClass{intmyFunction1();intmyFunction2();private:intA;intB;};在myFunction1中,A不应更改,但B可以更改。在myFunction2中,B不应更改,但A可以更改。有没有办法为每个函数制作灵活的const?即constB用于function1,反之亦然。 最佳答案 这可不容易。您可以声明一个方法const,这将使所有变量都const。您可以声明一个成员mutable,这样即使在const函数中也可以改变它。但是,您不能将成员mutab

c++ - D3D11_BUFFER_SRV - 如何使用它?

在DirectX11中,在为缓冲区创建着色器资源View时;我们必须填写D3D11_BUFFER_SRV结构。结构如下:typedefstructD3D11_BUFFER_SRV{union{UINTFirstElement;UINTElementOffset;};union{UINTNumElements;UINTElementWidth;};}D3D11_BUFFER_SRV;我似乎找不到任何文档来说明我应该使用每个union中的哪个字段以及何时使用,甚至找不到它们的真正含义。MSDN页面(http://msdn.microsoft.com/en-us/library/window

c++ - 通过函数转发 const 引用

我只是想知道,下面的代码是否定义错误:constint&foo(constint&a){returna;}intmain(){constint&b=foo(5);//someactionswithb...}当我们通过函数返回对右值的常量引用时,这些操作是否定义明确? 最佳答案 在函数调用结束后,您将返回对超出范围的临时对象的引用。这不是一个好主意,在调用调用UndefinedBehaviour之后使用引用如果您希望绑定(bind)到const引用时临时对象的生命周期延长规则保存在这里,请记住这仅有效,当且仅当临时直接绑定(bind)

c++ - 为什么 std::max 由 const 返回?

我想找到最大值Foo并对其调用inc(),这是一个非常量方法。当然,在寻找最大值时,我不想创建任何拷贝或移动,即我不想要Foofoo=std::max(foo1,foo2)。我尝试编写自己的max,但g++坚持要我返回一个const&。#includeclassFoo{public:Foo(intx):x_(x){std::cout(constFoo&foo)const{returnx_>foo.x_;}voidinc(){++x_;}intx_;};/**Doesn'tcompile.MustreturnconstT&ormustacceptnon-constT&*templatei

C++ 重载解析、转换运算符和 const

在这种情况下voidf(int*);voidf(constint*);...inti;f(&i);情况很清楚-f(int*)被调用,这似乎是正确的。但是,如果我有这个(这是错误地完成的(*)):classaa{public:operatorbool()const;operatorchar*();};voidfunc(bool);aaa;func(a);operatorchar*()被调用。我不明白为什么这样的决策路径会比使用operatorbool()更好。有什么想法吗?(*)如果将const添加到第二个运算符,代码当然会按预期工作。 最佳答案

c++ - BOOST_TYPEOF 返回 int 而不是 const int

你能解释一下为什么打印1吗?BOOST_TYPEOF不应返回constint。如何在不使用C++11功能的情况下检查函数是否返回const?#include#include#includeconstintf_const_int(){return1;}intmain(){typedefBOOST_TYPEOF(f_const_int())type;std::cout::value) 最佳答案 如果纯右值表达式的类型为cvint,则忽略该cv限定符。[表达式]/6:Ifaprvalueinitiallyhasthetype“cvT,”w

c++ - 在 C++ 中使用 const ArrayType 或 ConstArrayType typedef 具有 const 元素的数组

我将定义一些具有固定大小和常量元素的数组。我尝试使用typedef,但似乎有些困惑:typedefintA[4];typedefconstintCA[4];constAa={1,2,3,4};CAca={1,2,3,4};a[0]=0;ca[0]=0;a=ca;ca=a;所有赋值都会导致上面代码中的语法错误,我认为a[0]=0;在我测试之前应该是合法的。考虑指针,结果更容易理解p[0]=0;和cp=p;是正确的。typedefint*P;typedefconstint*CP;constPp=newint[4]{1,2,3,4};CPcp=newint[4]{1,2,3,4};p[0]=

c++ - 如果我将类声明为 const...而不是 constexpr,程序将无法运行?

这是我的程序:#includeclassDebug{public:constexprDebug(boolh):hw(h){}constexprboolany(){returnhw;}private:boolhw;};intmain(){constDebugx(true);constexprboolf=x.any();}这会引发错误“‘x’的值在常量表达式中不可用”。如果我更换constDebugx(true);与constexprDebugx(true);然后一切正常。我的印象是将constexpr放在对象定义之前与“隐式使该变量成为常量,同时验证它是常量表达式变量”同义。这对我来说表

c++ - Atomineer:确定返回类型是否为const

我正在使用Atomineer9.00格式化我的代码注释,但我很难确定返回类型是否为const。documentation说明对于MethodReturns,使用%type%将提供完整的返回类型(给出的示例是:constint*):MethodReturnsRulesusedtogeneratethedescriptionforthereturnvaluesformethods(VBfunctions).Thefollowingspecialvariablescanbeusedinthissection:%type%Thereturntypeforthemethod(constint*)

一文总结 C++ 常量表达式、constexpr 和 const

TLDR修饰变量的时候,可以把constexpr对象当作加强版的const对象:const对象表明值不会改变,但不一定能够在编译期取得结果;constexpr对象不仅值不会改变,而且保证能够在编译期取得结果。如果一个const变量能够在编译期求值,将其改为constexpr能够让代码更清晰易读。constexpr函数可以把运行期计算迁移至编译期,使得程序运行更快(但会增加编译时间)。但如果constexpr函数中存在无法在编译期求值的参数,则constexpr函数和普通一样在运行时求值,此时的返回值不是常量表达式。1.常量表达式和constexprC++11中引入了constexpr关键字。c