[問題] 暫時物件產生的原因
開發平台(Platform): (Ex: Win10, Linux, ...)
Linux
編譯器(Ex: GCC, clang, VC++...)+目標環境(跟開發平台不同的話需列出)
GCC
最近看到一個例子不太懂這是c++的甚麼機制讓他產生暫時物件的
#include <iostream>
#include <string>
using namespace std;
int main(){
pair<const string,int> data = {"123",5};
const pair<string,int> &ref = data;
}
我看文章說因為data的first是const可是ref的first沒有const但是編譯器
不會讓他編譯錯誤會產生暫時物件.
1.可是這邊我就不懂了,是甚麼機制讓他產生暫時物件的?有這機制的名稱嗎??
還有為何不讓他編譯錯誤要幫他產生暫時物件??
2.這種暫時物件新手蠻容易犯錯的,
有比較好的方式可以幫助我們確認是否產生暫時物件嗎??
我知道書上推薦用auto不過如果先不考慮auto有甚麼方法確認嗎??
感謝各位
※ 編輯: WangDaMing (111.248.244.154 臺灣), 01/10/2022 22:18:42
推
01/11 06:39,
2年前
, 1F
01/11 06:39, 1F
→
01/11 06:43,
2年前
, 2F
01/11 06:43, 2F
→
01/11 06:43,
2年前
, 3F
01/11 06:43, 3F
推
01/11 08:08,
2年前
, 4F
01/11 08:08, 4F
推
01/11 08:40,
2年前
, 5F
01/11 08:40, 5F
→
01/11 08:40,
2年前
, 6F
01/11 08:40, 6F
→
01/11 08:40,
2年前
, 7F
01/11 08:40, 7F
討論串 (同標題文章)
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章