草庐IT

强引用

全部标签

c++ - 指针算术和取消引用

在下面的代码中,任何人都可以向我解释一下粗体行是做什么的。structsouthParkRec{intstan[4];int*kyle[4];int**kenny;stringcartman;};intmain(){southParkReccartoon;cartoon.stan[1]=4;cartoon.kyle[0]=cartoon.stan+1;cartoon.kenny=&cartoon.kyle[2];*(cartoon.kenny+1)=cartoon.stan;//Whatdoesthislinedo?return0;} 最佳答案

c++ - 这种情况下的值或引用语义?

对于在某些情况下是选择值语义还是引用语义,我还没有感觉(但我希望如此)。有什么我可以应用的经验法则吗?我通常为内置数据类型(char、int、bool、double等)以外的所有内容选择引用。但是,有时无法从函数返回引用,所以我不得不使用指针。下面的函数就是一个例子:Foobar(){Foof;f.do_stuff();returnf;}我会使用boost::shared_ptr来存储Foo对象,但它使处理该对象变得非常难看。我目前正在查看一个返回几乎不会超过10个元素的双端队列的函数(这是我假设的,我无法确定)。按值(value)返回这个可以吗?我的考虑是过早优化的情况吗?

C++:将构造对象的引用传递给构造的成员对象?

好的,考虑以下类:classObject{public://ConstructorObject():[InitializationList]{...}...};classContainer{public:ObjectA;ObjectB;....Container():[InitializationList]{}};我想向对象提供[对容器及其成员的访问权]。我的第一个想法是以某种方式将对当前容器对象的引用传递给对象的构造函数。但我不知道该怎么做。我搞砸了“这个”,但我没有得到任何有用的东西。我试过这样的事情:classObject{public:Container&c//Construc

如何通过引用对Android Auto MediaBrowser的引用来在MediaBrowserServiceCompat中设置Extra_page和extra_page_size?

我有一个Android自动应用程序。我想利用分页以在应用程序中浏览。似乎您可以通过获取对MediaBrowserCompat的引用并在.subscribe()中传递这些常数来设置Extra_page和extra_page_size。但是,我无法弄清楚如何获得对AndroidAutoAudio用来调用.subscribe()的MediaBrowserCompat的引用。对于应该简单的事情来说,这似乎太复杂了,我只是想出事情吗?看答案如何获取对AndroidAutoMediaBrowser的引用?为此,您想知道包名称和类名(如果您要在应用程序之外绑定它)。如果您不知道这些详细信息,则可以从软件包管

c++ - 取消引用后调用函数的仿函数?

C++标准或Boost中是否有一个小的仿函数环绕另一个仿函数,但在调用该仿函数之前取消引用指针?我在想这样的事情:templatestructDerefCmp{templatebooloperator()(T*v)const{returnF(*v);}};我会在指针容器中使用它,例如,我想按值比较的地方:std::set>>s; 最佳答案 我不知道C++标准库或Boost中有任何函数对象执行此操作(这并不是说没有;我不熟悉Boost库中的一切:-P).但是,自己编写非常简单。请考虑以下事项:templateclassindirect

c++ - const 引用右值的类数据成员的生命周期是多少?

通常这个讨论只针对局部函数变量:voidfoo(constint&i){//useitillfoo()ends}foo(3);但是,这条规则是否也适用于class成员?structA{constint&a;A():a(3){}//version1A(constint&i):a(i){}//version2};现在A用作,{return()?newA:newA(3):newA(some_local_variable);}a的内容是否会在all3的整个生命周期内保持不变新分配A? 最佳答案 C++03标准(“12.2/5临时对象”部分)

c++ - 将可变数量的数组引用传递给具有可变参数模板的函数

我知道如何编写接受可变数量参数的可变参数模板函数:templatevoidf(){//whatever}而且我知道如何编写接受数组引用的模板函数:templatevoidf(T(&arr)[Length]){//whatever}但我想不出如何将两者结合起来,以便函数接受可变数量的数组引用。我的第一次尝试是templateunsignedintarrlen(T(&)[Length]){returnLength;}templateintf(T(&arr)[Length]){returnLength;}templateintf(T(&arr)[Length],Rest...rest){re

c++ - 可以通过引用传递函数对象吗?

我有一段代码需要传递一个函数对象(函数式)。我不能使用函数指针,因为我需要存储一些状态变量。假设我有很多状态变量。可以通过引用传递函数对象吗?我只见过按值传递的函数对象。这就是我的代码的样子:structFunctionObject{doublea,b,x,y;doubleoperator()(intv,intw){....}};templateClassMyClass{T&func;.....public:MyClass(T&func):func(func){}.....}; 最佳答案 通过引用传递函数对象很好,但你应该知道许多C

c++ - 引用成员是好的做法吗?是常量成员吗?

我和一位同事正在争论const或引用成员是否永远是正确的做法。const和reference成员使类不可复制且不可移动,除非您编写自己的复制和移动运算符来忽略reference或const成员。我找不到仅仅因为某些成员是引用或const就忽略复制或移动的情况。我认为拥有一个不可移动的对象在逻辑上很少是合理的,并且是一个仅与类是否为locationinvariant有关的选择。.不可复制的对象更为常见,但是选择使类不可复制与它是否拥有逻辑上不可复制的资源,它是否代表唯一所有权等有关。我想不出唯一特征的原因是否具有引用或const成员意味着该类应该具有这些特征中的任何一个(不可复制或不可移

c++ - operator= 的返回类型 - 引用还是值?

从函数“operator=”返回有什么区别byreferencebyvalue?在下面的示例中,这两个版本似乎都产生了正确的结果。#includeusingnamespacestd;classCComplexNumber{floatm_realPart;floatm_imagPart;public:CComplexNumber(floatr,floati):m_realPart(r),m_imagPart(i){}//thefollowingcanbealso//CComplexNumber&operator=(constCComplexNumber&orig){CComplexNum