reference相关内容
提供时,我想向函数传递一个可修改的参数,我应该选择什么:通过指针传递或通过引用传递? bool GetFoo(Foo& whereToPlaceResult); bool GetFoo(Foo * whereToPlaceResult); 我问这是因为我一直认为它是通过引用(1)传递参数的最佳实践,但是在检查了一些本地代码数据库后,我得出一个结论,最常见的方法是(2)。此外,男人自己
..
当c ++编译器为引用和指针生成非常类似的汇编代码时,为什么使用引用与指针相比更喜欢(并且更安全)? C ++中的指针变量和引用变量之间的差异,讨论它们之间的差异。 EDIT-1: 我正在查看g ++为这个小程序生成的汇编代码: int main(int argc,char * argv []) { int a; int& ra = a; int * pa =
..
n3035说: 一个变量是由对象的声明引入的。变量的名称表示对象。 n3090说: 一个变量由除非静态数据成员或对象的引用的声明引入。 我不知道是什么激发了这个变化。 解决方案 更改是响应 CWG缺陷633 。与此相关的更改列表可以在 n2993 中找到。 : 这些更改的目的是将“variable”的含义扩展为包含命名对象和引用,始终如一。
..
我是C ++的新手,所以这个问题可能是基本的: 我有两个需要引用的类。每个都在自己的头文件中,#include是对方的头文件。当我尝试编译我得到的错误“ISO C ++禁止声明'Foo'没有类型”为一个类。如果我切换的东西,所以相反的标头被解析,我得到与其他类相同的错误。 在C ++中有可能有两个类,需要引用每个其他? 更多细节:我有一个“App”类和一个“Window”类。应用
..
struct Div { int i; int j; }; class A { public: A(); Div& divs; }; 在我的构造函数定义中,我有以下 A :: A():divs(NULL) {} 我得到以下错误: Error72错误C2354: 'A :: divs':引用成员的初始化需要
..
我想知道& class1& class1 :: instance要做的事 } 解决方案 这意味着你的方法返回一个引用到一个method1对象。引用就像一个指针,它引用对象而不是它的副本,但是与指针的区别是引用: 永远不会未定义/ NULL 您不能与他们进行指针运算 所以他们是一种光,更安全的指针版本。
..
以下代码在C ++中如何工作?是逻辑的吗? const int& ref = 9; const int& another_ref = ref + 6; 为什么当非const引用不允许时,C ++允许const引用的文本初始化?例如: const int days_of_week = 7; int& dof = days_of_week; //错误:对con
..
int& fun() { int * temp = NULL; return * temp; } 在上面的方法中,我试图做一个NULL指针的解引用。当我调用这个函数它不给出异常。我发现当返回类型是通过引用它不给出异常,如果它是通过值然后它。即使当NULL指针的解引用被赋值给引用(如下面的行)时,也不会给出。 int * temp = NULL: int& te
..
假设我在C ++中有这个: void test(int& i,int& j) { ++ i; ++ j; } 这些值在函数内部改变,然后在外部使用。我怎么能写一个在Java中做同样的代码?我想象我可以返回一个封装这两个值的类,但是这似乎很繁琐。 解决方案 Java没有等价的C ++引用。使这个工作的唯一方法是将值封装在另一个类中,并交换类中的值。
..
我刚刚开始C ++。除了我对返回类型的赋值和取消引用运算符感到困惑之外,所有都很好。我跟着这本书C ++ Primer。在各种情况下,作者说返回类型的赋值操作符是指左手操作数的类型,但后来,他说返回类型是左手操作数的类型。我已经参考C ++ 11标准秒。 5.17,其中返回类型被描述为“左值引用左手操作数”。 同样,我不知道dereference是否返回指向的对象,对对象的引用。 这些
..
这些之间有一些细微的区别: void a1(float& b){ b = 1; }; a1(b); 和 void a1(float * b){ (* b)= 1; }; a1(& b); ? (或者似乎从main()),但第一个显然更短,但我看到的大多数代码使用第二个符号。有区别吗? 解决方案 两者都一样,但是
..
根据此答案下的注释,引入引用主要是为了支持运算符重载引用Bjarne Stroustrup: 引用主要是 操作符重载。 C 将每个函数参数传递给 值,并且通过 传递对象的效率低或者 不合适,用户可以传递一个 指针。这个策略不工作 使用了操作符重载。在 的情况下,符号的便利是 必要的,所以如果对象是大的,用户不能是 预期插入 操作符的地址。 这意味着操作符重载不能使
..
我正在读一本关于二叉搜索树的书,有些奇怪的东西出现了。 class BST { public: void insert(const Comparable& item) private: BinaryNode * root; struct BinaryNode { 可比较的元素; BinaryNode * left; BinaryNode * right;
..
以下: std :: map测试; 给出: code>错误C2101:常量 上的'&' std :: map测试; 提供 错误C2528:'_First':引用的指针是非法的 不能包含键值的引用,因为它需要有时实例化类,并且不能在没有对象的情况
..
在我的程序中,我有一个STL集。 set myStrings; 我读过,如果可能的话,用引用替代指针是一个好习惯。 (当然,只有不需要指针的实际功能)。 set
..
假设我有一个类 Foo 与 std :: string member str 。 get_str return? std :: string Foo :: get_str ()const { return str; } 或 const std :: string& Foo :: get_str()const { return str; }
..
我强调引用不是指针,而是对象的别名。但是,我仍然不明白这对于我来说意味着什么是一个程序员,即什么是引用下面? 我认为最好的方式来理解这一点是为了理解为什么我不能在地图中存储引用。 我知道我需要停止思考引用作为指针的句法su,只是不确定如何:/ 解决方案 他们的方式我明白了,引用被实现为指针下面。你不能将它们存储在地图中的原因是纯粹的语义;您必须在创建引用时对其进行初始化,并且以
..
请查看以下简单代码: class Foo { public: Foo(){} 〜Foo(){} Foo(const Foo&){} Foo& operator =(const Foo&){return * this; } }; static Foo g_temp; const Foo& GetFoo(){return g_temp; }
..
我想知道一个很好的C ++ getters和setters的语法。 private: YourClass * pMember ; 安装程序很容易我猜猜: void Member(YourClass * value){ this-> pMember = value; //忘记删除等 } 和getter? 应该使用引用还是常量指针?
..
在下面的代码中,函数指针和我认为是“函数引用”似乎有相同的语义: #include using std :: cout; void func(int a){ cout
..