reference相关内容
为了测试我的理解,我写了一篇文章以下小程序。看来好像我已经成功地重新分配了一个引用。有人可以向我解释我的程序中实际发生了什么吗? #include #include #include using namespace std; int main() { int i = 5,j = 9; int&
..
给定: int i = 42; int j = 43; int k = 44; 通过查看变量地址,我们知道每个变量占用4个字节(在大多数平台上)。 但是,考虑到: int i = 42; int& j = i; int k = 44; 我们将看到变量 i 4字节,但 j 采用无和 k 再次在堆栈4个字节。
..
指向引用的指针,指向指针的指针和指向C ++中的指针的指针之间有什么区别? 在哪里应该优先于另一个? / p> 解决方案 首先,对指针的引用就像是对任何其他变量的引用: void fun(int *& ref_to_ptr) { ref_to_ptr = 0; //将“传递”指针设置为0 //如果指针未通过ref传递, //那么只有您接收的副本(参数)设置为0,
..
参数之间的区别是什么: int foo1(const Fred& arg){ ... } 和 int foo2(Fred const& arg){ ... } ? 解决方案
..
我有这段代码(总结)... AnsiString工作(AnsiString格式,...) { va_list argptr; AnsiString buff; va_start(argptr,format); buff.vprintf(format.c_str(),argptr); va_end(argptr); return buff; }
..
可能重复: 我的编译器没有抱怨将临时赋值给const引用: string foo (){ return string(“123”); }; int main(){ const string& val = foo(); printf(“%s\\\ ”,val.c_str()); return 0; } 为什么?我认为从 foo 返回的字符串是临
..
这段代码是否有效(以及定义的行为)? int& nullReference = * ; g ++和clang ++编译时没有任何警告,即使使用 -Wall , -Wextra , -std = c ++ 98 , -pedantic , -Weffc ++ ... 实际上是null,因为它不能被访问(它将意味着解引用一个空指针),但是我们可以通过检查它的地址
..
这是示例: #include #include using namespace std; void f1(double& ret){ ret = 5 .; } void f2(double * ret){ * ret = 5 .; } int main(){ double ret = 0 .; thread
..
这些是相同的: int foo(bar * p){ return p-& (); } 和 int foo(bar& r){ return r.someInt(); } 忽略空指针的潜力。无论 someInt()是虚拟的还是传递 bar 或子类,这两个函数在功能上是否相同 bar ? 这是否切片: bar& ref =
..
string foo(){return“hello”; } int main() { //下面的例子应该是非法的绑定一个非const(lvalue)引用到一个右值 string& tem = foo(); //下面应该是正确的,因为只有const引用可以绑定到rvalue(最重要的const) const string& constTem = foo(); }
..
我想知道C ++标准关于这样的代码说: int * ptr = NULL; int& ref = * ptr; int * ptr2 =& ref; 在实践中,结果是 ptr2 NULL但是我想知道,这只是一个实现细节或者是在标准中很好的定义? 在不同的情况下,解除引用一个NULL指针应该导致崩溃,但在这里我解除引用它以获得由编译器作为指针实现的引用,所以真
..
C ++引用有两个属性: 它们总是指向同一个对象。 它们不能为0。 指针是相反的: $ b p>为什么在C ++中没有“非可空,可重复的引用或指针”?我不能想到引用不可重复的好理由。 编辑: 这个问题经常出现因为我通常使用引用,当我想确保一个“关联”(我在这里避免单词“引用”或“指针”)从不无效。 我不认为我曾经认为“伟大的,这ref总是指同一个对象”。如果引用是
..
我正在阅读此问题的答案 C ++的优点和缺点/ a>,并在阅读评论时得到了这个疑问。 程序员经常发现,“this”是一个指针,而不是引用。另一个混乱是为什么“hello”不是类型std :: string但评估为一个char const *(指针)(数组到指针转换后)评论时间70年01月01日原作者:Johannes Schaub - b $ b 这只表明它不使用与其他(以后的)语言相同
..
为什么第一次返回引用? int x = 1; int y = 2; (x> y?x:y)= 100; 第二个不是? int x = 1; long y = 2; (x> y?x:y)= 100; 实际上,第二个根本没有编译 - “赋值左侧没有左值”。 > 解决方案 表达式没有返回类型,它们有一个类型和 - 在最新的C ++标
..
在这种情况下,你想在c ++中使用这种性质的代码吗? void foo(type *& in ){...} void fii(){ type * choochoo; ... foo(choochoo); } 解决方案 这是类似于使用双指针的原因;如果你需要修改指针,而不是指针所指向的对象,使用指针的引用比使用指针稍微安全些。
..
这是有点主观的,我想;我不知道这个意见是否一致(我已经看到很多代码片段返回了引用)。 根据这个问题我刚才问,关于初始化引用,返回一个引用可以是邪恶因为,[我知道],它使它更容易错过删除它,这可能导致内存泄漏。 这让我担心,因为我遵循的例子我想象的东西),并在一个公平的几个地方做这个...我误解了吗?是邪恶的吗?如果是这样,是多么邪恶? 我觉得因为我混合的指针和引用,加上我是新的C
..
在C ++中引用变量的简短定义是什么? 解决方案 是一个实体,是另一个对象的别名。 / em>作为变量仅由对象的声明引入。 对象是存储区域,在C ++中,引用不一定占用任何存储空间。 作为对象和引用是C ++中不同的实体组,因此术语“引用变量”没有意义。
..
当给一个函数使用原始变量时,更好的做法是: unsigned long x = 4; void func1(unsigned long& val){ val = 5; } func1(x); 或: code> void func2(unsigned long * val){ * val = 5; } func2(& x);
..
我一直在使用C ++,我一直在想知道新关键字。 1)使用新关键字... MyClass * myClass = new MyClass(); myClass-> MyField =“Hello world!”; 2)没有新关键字... MyClass myClass; myClass.MyField =“Hello world!”;
..
我知道标题听起来很熟悉,因为有很多类似的问题,但我要求的问题的不同方面(我知道在堆栈上的东西和把它们放在堆之间的区别)。 在Java中,我总是可以返回对“本地”对象的引用 public Thing calculateThing(){ Thing thing = new Thing(); //做计算和修改事情 return thing; } 在C ++中,做
..