C++ C+中的引用+;

C++ C+中的引用+;,c++,reference,C++,Reference,假设我们有这两种情况 int p = 10; int& q = p; 及 这两种情况不一样吗?我不太清楚引用的目的,因此请解释这两者的区别。在第二种情况下,如果更改q的值,则不会影响p的值。在第一种情况下,更改q的值也将更改p的值,反之亦然 $ cat ref.cpp #include <iostream> int main () { int p = 10; int q = p; int s = 10; int& t = s; q = 11;

假设我们有这两种情况

int p = 10;
int& q = p;


这两种情况不一样吗?我不太清楚引用的目的,因此请解释这两者的区别。

在第二种情况下,如果更改
q
的值,则不会影响
p
的值。在第一种情况下,更改
q
的值也将更改
p
的值,反之亦然

$ cat ref.cpp
#include <iostream>

int main () {
  int p = 10;
  int q = p;
  int s = 10;
  int& t = s;
  q = 11;
  t = 11;
  std::cout << p << std::endl;
  std::cout << q << std::endl;
  std::cout << s << std::endl;
  std::cout << t << std::endl;
  s = 12;
  std::cout << s << std::endl;
  std::cout << t << std::endl;
}

$ g++ ref.cpp
$ ./a.out
10
11
11
11
12
12
$
$cat ref.cpp
#包括
int main(){
int p=10;
int q=p;
int s=10;
int&t=s;
q=11;
t=11;

std::cout在第二种情况下,如果更改
q
的值,则不会影响
p
的值。在第一种情况下,更改
q
的值也会更改
p
的值,反之亦然

$ cat ref.cpp
#include <iostream>

int main () {
  int p = 10;
  int q = p;
  int s = 10;
  int& t = s;
  q = 11;
  t = 11;
  std::cout << p << std::endl;
  std::cout << q << std::endl;
  std::cout << s << std::endl;
  std::cout << t << std::endl;
  s = 12;
  std::cout << s << std::endl;
  std::cout << t << std::endl;
}

$ g++ ref.cpp
$ ./a.out
10
11
11
11
12
12
$
$cat ref.cpp
#包括
int main(){
int p=10;
int q=p;
int s=10;
int&t=s;
q=11;
t=11;
标准::cout
在这种情况下,
q
实际上是
p
的别名。它们共享一个内存位置。如果修改
q
,则修改
p
。如果修改
p
,则修改
q
只是
p
的不同名称

int p = 10;
int q = p;
这里,
q
在初始化
q
时获取
p
值的副本。之后,
q
p
是完全独立的。更改
q
不会影响
p
,更改
p
不会影响
q

在这种情况下,
q
实际上是
p
的别名。它们共享一个内存位置。如果修改
q
,则修改
p
。如果修改
p
,则修改
q
只是
p
的不同名称

int p = 10;
int q = p;

在这里,
q
q
初始化时获取
p
值的副本。之后,
q
p
是完全独立的。更改
q
不会影响
p
并且更改
p
不会影响
q
更改引用将更改un code>这可能很有用 在下列情况下:

int count_odd = 0;
int count_even = 0;
int i;

    ....

    // Create a reference to either count_odd or count_even.
    int& count = (i%1) ? count_odd : count_even;
    // Now update the right count;
    count++;
这是相当人为的,但随着时间的推移,它变得更加有用
复杂的情况。

更改引用将更改基础变量。这非常有用 在下列情况下:

int count_odd = 0;
int count_even = 0;
int i;

    ....

    // Create a reference to either count_odd or count_even.
    int& count = (i%1) ? count_odd : count_even;
    // Now update the right count;
    count++;
这是相当人为的,但随着时间的推移,它变得更加有用
复杂的情况。

在第二种情况下,
pq
是两个独立的整数。在第一种情况下,两个
pq
将指向内存中的相同位置。正如您所要求的引用。请通过
按值调用和按引用调用
。您可以理解引用的用法。浏览页面。

在第二种情况下,
pq
是两个独立的整数。在第一种情况下,
pq
将指向内存中的同一位置。正如您所要求的引用目的。请通过
callbyvalue和callbyreference
。您可以理解引用的用法。浏览页面。

isocpp祝您愉快。isocpp haI’’我很高兴。谢谢你@dhke。很好的解释。谢谢你@dhke。很好的解释。