草庐IT

弱引用

全部标签

c++ - 带引用和不带引用的指针类型转换

鉴于A*pA;和B*pB;,以下类型转换之间是否存在任何差异(查询所有C++样式类型转换):pB=reinterpret_cast(pA);//pointerpB=reinterpret_cast(pA);//pointer-reference 最佳答案 两者截然不同,至少在理论上(并且可能在实际上,一些稀有机器)。第一个接受指向A的指针,然后将其转换为指向B的指针;至少在理论上,这可能涉及大小和表示的变化。(我实际上在机器上工作过其中char*大于int*.我相当怀疑任何这样的机器仍然存在,尽管可能在嵌入式世界中……)第二个实际上

c++ - 位集引用

来自http://www.cplusplus.com/reference/stl/bitset/:BecausenosuchsmallelementaltypeexistsinmostC++environments,theindividualelementsareaccessedasspecialreferenceswhichmimicboolelements.这个位引用究竟是如何工作的?我能想到的唯一方法是使用char的静态数组,但是每个实例都需要将其索引存储在数组中。由于每个引用实例至少有size_t的大小,这会破坏位集的紧凑性。此外,调整大小可能会很慢,而位操作预计会很快。

c++ - 引用另一个库的c++静态库的链接器错误

我是C++的新手,调试链接器错误时遇到问题。我在g++编译器中使用wxDev-c++。我创建了一个静态库,该库链接到一个基本项目。该库最初不包含对外部头文件或库的引用,它只是几个简单的测试函数,将两个double值加在一起并返回值。链接到测试项目时,此方法工作正常。但是,我现在正在尝试将FTP合并到该库中,并且出现链接器错误。目前,测试功能只是试图访问相同的简单加法功能以进行测试,我什至没有调用FTP功能,因为我只是想使测试项目正确编译。库代码:DaFTPLib.h:#ifndefWAVE_H#defineWAVE_H#ifdef__BORLANDC__#pragmahdrstop#e

c++ - 如果没有对它的常量引用,临时对象会被删除吗?

让我们看一下这两个函数:std::stringget_string(){std::stringret_value;//Calculateret_value...returnret_value;}voidprocess_c_string(constchar*s){std::cout这里有两个可能的process_c_string调用,参数由get_string返回。没有绑定(bind)const引用到get_string的返回对象。process_c_string(get_string().c_str());对get_string的返回对象绑定(bind)const引用。conststd

c++ - 从单元测试 .EXE 项目中引用来自 VC++ .EXE 项目的类

我有一个旧的遗留C++应用程序,我正在尝试为其编写一些单元测试。我在我的解决方案中创建了第二个项目,该项目构建为单元测试可执行文件(使用googletest)。测试项目引用主项目的头文件。在我尝试使用主项目中的类之一之前,测试项目构建良好。#include"stdafx.h"#include"JsContext.h"#include"gtest/gtest.h"TEST(JsContextTests,CreateJsContext){JsContextcontext;//linkingfailsassoonasthislineisadded}产生..Error1errorLNK2001

取消引用类成员变量的 C++ 语法

这更像是一个语法优雅的问题,但我正在学习C++并在玩弄指针。如果我有一个类Car,我可以创建一个指向该类新实例的指针,方法是Car*Audi=newCar;如果那个类有一个成员变量weight(比如一个unsignedint),我可以用任何一个访问它(*Audi).weight或Audi->weight如果那个类有一个成员变量age本身就是一个指针,我可以用任何一个访问它*((*Audi).age)或*(Audi->age)除了这两种(诚然不是特别复杂的)取消引用指针的方法之外,还有其他方法吗?我想想想Audi->*age可以用,可惜不行。(我很欣赏访问器通常更可取,我只是感兴趣。)

c++ - 我应该使用什么函数签名来返回对可能不存在的对象的引用?

我正在用C++编写一个简单的容器类,类似于存储按键索引的对象的map。我想提供访问器函数,例如:V&getValue(constK&key);我在其中返回对值的引用。但我也想处理键/值不存在的情况,并能够向用户返回一些状态(可能有一些原因导致它不存在,我想通过一些状态类型)。我想我可以执行以下操作,但调用此函数需要先构造一个V对象,然后才能调用此函数,我只是将内部V对象复制到通过引用传入的对象中,所以那似乎很糟糕。StatusgetValue(constK&key,V&v);我还可以:V&getValue(constK&key,Status&s);但由于某些原因,这看起来有点笨拙,因为

C++ - 我应该使 `operator+` 为常量吗?它会返回引用吗?

当一个类重载operator+时,是否应该声明为const,因为它不对对象做任何赋值?另外,我知道operator=和operator+=返回一个引用,因为进行了赋值。但是,operator+呢?当我实现它时,我应该复制当前对象,将给定对象添加到该对象,然后返回该值吗?这是我的:classPoint{public:intx,inty;Point&operator+=(constPoint&other){X+=other.x;Y+=other.y;return*this;}//Theaboveseemsprettystraightforwardtome,butwhataboutthis?

c++ - 右值或左值 (const) 引用参数

我想通过r-或l-值(const)引用将参数(某种具体类型,比如int)传递给成员函数。我的解决方案是:#include#includestructF{usingdesired_parameter_type=int;template::type,desired_parameter_type>::value>::type>voidoperator()(X&&x)const{//orevenstatic_assert(std::is_same::type,desired_parameter_type>::value,"");std::forward(x);//somethinguseful

c++ - 如果右值没有绑定(bind)到 const 引用,这将如何影响移动语义和完美转发?

在http://www.reddit.com/r/IAmA/comments/1nl9at/i_am_a_member_of_facebooks_hhvm_team_a_c_and_d/ccjm2qs,AndreiAlexandrescu写道:IthinkbindingrvaluestoconstreferenceshasbeenthesmallmistakethatcausedthervaluereferencesHindenburg...Itwouldbealongdiscussion.Bindingrvaluestoconst&madesensewhenfirstintroduc