reference相关内容
可能重复:
..
一直在想,用[]或*声明变量有什么区别?我看到的方式: char * str = new char [100]; char str2 [] =“Hi world!”; ..应该是主要的区别,虽然我不确定如果你可以做 char * str =“Hi all”; ..因为指针应该引用一个静态成员,我不知道是否可以吗? 无论如何,真
..
我从Java转移到C ++,有点困惑的语言的灵活性。有一点是有三种方法来存储对象:一个指针,一个引用和一个标量(如果我正确理解,存储对象本身)。 我倾向于尽可能使用引用,因为它尽可能接近Java。在一些情况下,这是不可能的: MyType& MyClass :: getSomeAttribute(){ MyType t ; return t; } 这不会编译
..
我听说临时对象只能分配给常量引用。 但是此代码给出错误 #include template t const& check(){ return t(); // return a temporary object } int main(int argc,char ** argv){ const int& resCheck
..
我有这样的功能 const string& SomeClass :: Foo(int Value) { if(Value 10) return“”; else return SomeClass :: StaticMember [i]; } 我得到警告: code>。这是为什么?我认为函数返回的两个值(引用const char *“”和
..
我可以使用一个对象作为它的指针,或者它的引用。我理解,区别是指针必须手动删除,引用仍然保留,直到它们超出范围。 我应该什么时候使用它们? 这些问题都没有回答我的疑问: > 指针与参考 引用,对象和指针之间的C ++差异 解决方案 引用基本上是一个带有限制的指针(必须在创建时绑定,不能被反弹/ null)。如果你的代码使用这些限制是有意义的,那么使用引用而不是指针允许编译
..
使用类似的代码 #include struct P { int x; P(int x):x(x){} 〜P(){std :: cout
..
这就是为什么: struct S {}; struct T { T(S& s):s {s} {} S& s; }; int main() { S s; T t {s}; } 给我一个GCC 4.7的编译器错误: test.cpp:在构造函数'T :: T(S&)': test.cpp:5:18: $ b
..
允许此操作的设计原理是什么 const Foo& a = function_returning_Foo_by_value(); 但不是 Foo& a = function_returning_Foo_by_value(); ? 在第二行(第一行不会出错)? 解决方案 我会回答你的问题。 为什么他们允许 Foo co
..
错误:传递'const QByteArray'作为'this'参数的'QByteArray& QByteArray :: append(const QByteArray&)'舍弃限定符[-fpermissive] 作为函数参数我做到了。 ,但现在我得到一个错误!!, i dnt想让函数常量,因为我必须转换qbyte数组中的数据为短,然后附加另一个数组。 QByteArray ba
..
在C ++中,我可以选择函数指针和函数引用(为了完整性,甚至可以选择函数值): void call_function_pointer(void(* function)()){ (* function)(); } void call_function_reference(void(& function)()){ function(); } void call_function_
..
如果我有这个: int a = 2; int b = 4; int& ref = a; 如何让 ref 参考 b 此代码之后? 谢谢! 解决方案 这是不可能的, =“http://stackoverflow.com/questions/728233/why-are-references-not-reseatable-in-c”>按设计。参考文献无法反弹
..
对于从函数返回对局部变量的引用,我有一些问题: class A { public: A(int xx):x(xx) { printf(“A :: A()\\\ ”); } }; const A& getA1() { A a(5); return a; } A& getA2() { A a(5); return a; } A ge
..
错误的形式: int& z = 12; 正确的形式: int y; int& r = y; : 为什么第一个代码错误? 解决方案 标题中的错误“意义是什么? / 1说:“每个表达式都是左值或右值。重要的是要记住,lvalueness和rvalueness是表达式的属性,而不是对象的属性。 Lvalues名称对象持续超过单
..
据我所知,没有理由我不应该允许在C ++中传递一个指针的引用。然而,我这样做的努力是失败,我不知道为什么。 这是我在做什么: void myfunc字符串*& val) { //对字符串指针执行操作 } //以后 { / / ... string s; myfunc(& s); // ... } : 无法将参数1从'
..
vector v; v.push_back(1); $ b $ p v.push_back(v [0]); 如果第二个push_back导致重新分配,向量中第一个整数的引用将不再有效。这是不安全的吗? vector v; v.push_back(1); v.reserve(v.size()+ 1); v.push_back(v
..
在库中,我有一个函数,它在数据库中搜索一个键,并返回一个对象的非const引用。我想处理没有找到的键的情况,这通常是由调用函数时的错误引起的。这种情况是如此糟糕,程序不能继续,所以我打印一个消息,以帮助发现错误,并调用 exit(1)。问题是返回语句,在这种情况下永远不会执行,但必须有。如果它是一个指针,我可以只是返回nullptr; 但是有参考?我应该做这样的伪代码吗? Type& ge
..
只是想知道它是如何实现跨不同的编译器和调试/发行配置。标准是否对其实施提出了建议? 我试图运行一个简单的程序,我已经从函数返回非const引用和指向局部变量的指针,但它的工作方式是一样的。所以是真的,内部引用只是一个指针? 解决方案 引用的自然实现确实是一个指针。但是,在您的代码中不要依赖于此。
..
在C ++中,之间的区别是: void func(MyType&); // declaration // ... MyType * ptr; func(* ptr); //编译器不给错误 func(ptr); //编译器给出错误,我想&表示内存地址所以 //此语句应正确,因为ptr只是一个指针 //或一些真正的var的地址。 解决方案 co
..
我的代码看起来像这样: class T {}; 类容器{ const T& first,T& second; container(const T& first,const T& second); }; 类适配器:T {}; container(adapter(),adapter()); 我认为常量引用的生命周期将是容器的生命周期。
..