草庐IT

弱引用

全部标签

c++ - 将指针分配给引用

我正在使用一个库,该库具有一个引用圆的绘制函数。我想调用这个函数,但我有一个指向我的圆对象的指针。我可以将这个指向的对象传递给draw函数吗?如果不是,为什么不呢?谢谢,巴里 最佳答案 是的,你可以。你有这个功能voidDoSth(/*const*/Circle&c){///}你有这个指针/*const*/Circle*p=/*...*/;你可以这样调用它DoSth(*p);我建议您阅读agoodC++book.这是非常基础的东西。 关于c++-将指针分配给引用,我们在StackOver

c++ - C++ 中的引用变量存储什么值?

一个指针存储/分配一个内存地址;引用变量呢?它像Stack上的任何其他非指针简单变量一样存储对象的实际值?谢谢! 最佳答案 引用本身不包含任何内容。C++标准甚至声明不需要实现为引用分配任何存储空间。它实际上只是它引用的对象或函数的别名。尝试获取引用的值将获取它引用的对象或函数的值(在这种情况下,您将获得一个函数指针,就像您尝试使用其原始名称从函数中获取值一样),相反。当然,当您进入较低级别并查看汇编代码时,引用就像指针一样。但在语言层面,他们是完全不同的野兽。例如,对const的引用可以绑定(bind)到临时对象,它们需要实现复制

c++ - 有没有一种方法可以在不使用命名空间 std 或以 std::为前缀的情况下引用 cout?

我是C++的新手,我正在使用std::cout用于调试目的。虽然,我真的很想能够只使用cout而不是整个std::cout事物。我知道我可以导入std命名空间,但有人解释说这是一件坏事,因为可能会因此发生名称冲突。有什么办法吗?我试过了std::ostreamcout=std::cout;但是我明白了function"std::basic_ostream::basic_ostream(conststd::basic_ostream&)[with_CharT=char,_Traits=std::char_traits]"(declaredatline391of"/usr/include/

java - 如何在 Java 中使用等效于 C++ 的引用参数?

假设我在C++中有这个:voidtest(int&i,int&j){++i;++j;}值在函数内部改变,然后在外部使用。我如何编写在Java中执行相同操作的代码?我想我可以返回一个封装这两个值的类,但这看起来真的很麻烦。 最佳答案 使用包装器模拟引用。可以以某种方式模拟此行为的一种方法是创建通用包装器。publicclass_{Eref;public_(Ee){ref=e;}publicEg(){returnref;}publicvoids(Ee){this.ref=e;}publicStringtoString(){returnr

c++ - 函数返回值和右值引用绑定(bind)

我正在尝试理解C++中的move语义和完美转发为此,我制作了下一个简单程序:#includestructTest{Test(){std::cout(MakeTest()));//outputTest(Test&&)\n~Teststd::cout程序有以下输出(VS2013,GCC4.8-调试mdoe,优化关闭):------------------------------Test()Test(constTest&)~Test()------------------------------Test()Test(constTest&)~Test()Test(Test&&)~Test()-

c++ - 如何在 Google Mock 中匹配参数引用

我是googlemock的新手。现在我有一个关于如何匹配参数引用的问题?这是代码classParameter{public:intm_idata;charm_cdata;boolParameter::operator==(constParameter&element)const{return(m_idata==element.m_idata&&m_cdata==element.m_cdata);}};classFooInterface{public:virtual~FooInterface(){}virtualvoidSetParameter(Parameter&val)=0;};//

c++ - 由于引用计数器原子递增/递减,shared_ptrs 是否会遇到缓存未命中?

(这可能是原子递增/递减的一般问题,但我在shared_ptrs领域遇到过这种情况)当原子引用计数器递增和递减时,shared_ptr是否遇到两次缓存行未命中/访问?我确实找到了这个:atomicoperationcost但它似乎并没有过于确定......更新:如果我运行一个循环数百万次,递增一个原子变量,我得到的L1缓存未命中率为0.2。如果我对非原子int做同样的事情,我会得到0L1缓存未命中率......测试将暗示L1缓存行正在被逐出。 最佳答案 shared_ptr必须在某处存储引用计数变量。它可能是从堆中分配的,并且sha

c++ - 使用 const 键类型引用调用 std::set of pointers 的 count 方法

我有一个类structS{boolfoo(constAType&v)const{returnvalues.count(&v);//compileerrorduetotheconstnessofv}private:std::setvalues;};这是一个简化版本。在实际代码中,foo做了一些复杂的事情。代码产生错误invalidconversionfrom‘constAType*’to‘std::set::key_type{akaAType*}’我认为foo应该采用'constAType&v'因为它不会改变v。成员变量“values”的类型不能为std::set,因为结构S的某些方法调

c# - 通过引用将 char** 从 C# 传递到非托管 C++

这是C#代码。namespaceCameraTest{classProgram{staticvoidMain(string[]args){string[]lst=newstring[10];for(inti=0;i非托管方法是这样的。BOOLWINAPICAM_EnumCameraEx(BOOLbSynchronized,char**ppCameraList,longlMaxCamera,longlMaxCharacter);该方法写入传入的字符串数组。有没有办法从C#调用此方法并让非托管代码能够写入字符串数组? 最佳答案 感谢Re

c++ - 指针作为成员或引用作为成员

我需要在C++Linux中进行澄清。我有classC1和另一个classC2。C1将引用C2。classC1{C2&obj;}我在这里考虑两个选择,直接持有C2的引用为C2&obj;创建C2的指针,作为c2*obj;哪个好?它有什么区别?什么时候选择? 最佳答案 尽可能避免使用引用成员。引用和指针的区别同样适用于此,如果你有一个引用成员,那么它必须在创建你的类对象时被初始化你不能像指针成员那样进行延迟初始化,因为引用不能为NULL并且不能被重新设置,而指针成员可以在需要时懒惰地指向C2实例。此外,请注意还有其他副作用,一旦您拥有引用