我在教自己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