我在教自己C++,在这个过程中我正在编写简单的小程序来学习基本思想。对于“传递按引用”,我很困惑,为什么下面的代码段工程(部分代码就在那里练习重载构造函数):C++:使用&运算符通过引用
#include <iostream>
#include <string>
using namespace std;
class Dude
{
public:
string x;
Dude(); // Constructor 1
Dude(const string &a); // Constructor 2
};
Dude::Dude() : x("hi") {}
Dude::Dude(const string &a) : x(a) {}
int main()
{
Dude d1;
Dude d2 = Dude("bye");
cout << d1.x << endl;
cout << d2.x << endl;
return 0;
}
在“主要()”,我创建了一个类型为“Dude”的对象“d2”,并使用构造函数2将“x”设置为字符串“bye”。
但是在构造函数2的声明中,我告诉它接受一个字符串的地址,而不是字符串本身。那么为什么我可以通过它“再见”(这是一个字符串)。为什么我不需要创建一个变量字符串,然后将该字符串的地址传递给Dude的构造函数2?
谁说基准参数是指传递一个地址?他们必须执行。 – delnan
尽管参考并不是C++所关心的地址,但在现实生活中,它几乎总是以这种方式实现。但是引用根本不像指针。好吧,几乎没有。 –
我改变了标题以更好地反映问题/答案。 – higgy