Re: [問題] 傳遞多個引數是否會自動建構成類別物件
※ 引述《siaco (@@)》之銘言:
: ※ 引述《QQ29 (我愛阿蓉)》之銘言:
: : 今天無意間發現我不太能解釋這個現象
: : class Bar
: : {
: : public:
: : Bar(int a)
: : {
: : }
: : ~Bar()
: : {
: : }
: : };
: : void Foo(Bar &a)
: : {
: : }
: : int main()
: : {
: : Foo(56);
: : }
: : 這不會過 但我不太會解釋 是為什麼
: : 是因為R value嗎?
: : 但是我加上const後
: : 就可以build過了~~
: : void Foo(const Bar &a)
: : 我更想不懂 為什麼有差別了
: : 請各位指點迷津謝謝~
: 小弟看了這題目後有幾個問題,
: Foo(56)是用const temp變數存 56 ?
: 然後再一個temp Bar物件利用上面的const temp變數去建構?
: 以上的推論是對的嗎?
: 若推論正確,那建構子的變數有多個時,
: 如 Bar的建構子為Bar(int A,char b)
: 若傳入Foo(56,'b')也會自動建構Bar嗎?
: 另外,若Bar的建構子有多個的情況,
: 會自動搜尋對應的建構子嗎?
編譯器之所以會強制使用 const 是因為不允許你修改暫存物件,因為修改暫存物件沒有
意義!在 DOS 時代的 Turbo C++ 或是 Borland C++ 或許可以用非 const 方式參考暫
存變數.
當你用整數型態呼叫 Foo(Bar &) 函式編譯器會選擇 Bar(int) 建構子的版本,
這時候編譯器會產生 Bar 的暫存物件,如果要用多參數的方式引導編譯器做
型態轉換的話, 或許要改成這樣:
class Bar
{
public:
Bar(int a){}
// 支援 2 個參數的版本
Bar(int A, char b){}
~Bar(){}
};
void Foo(int A, char b)
{
// 以 2 個參數建構 bar 物件
Bar bar(56, 'b');
}
void main(void)
{
Foo(56, 'b');
}
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.141.146.62
推
08/10 00:07, , 1F
08/10 00:07, 1F
推
08/10 00:53, , 2F
08/10 00:53, 2F
→
08/10 00:54, , 3F
08/10 00:54, 3F
→
08/10 00:59, , 4F
08/10 00:59, 4F
推
08/10 02:10, , 5F
08/10 02:10, 5F
→
08/10 02:16, , 6F
08/10 02:16, 6F
推
08/10 04:17, , 7F
08/10 04:17, 7F
推
08/10 19:57, , 8F
08/10 19:57, 8F
→
08/10 20:04, , 9F
08/10 20:04, 9F
→
08/10 20:04, , 10F
08/10 20:04, 10F
推
08/10 20:12, , 11F
08/10 20:12, 11F
→
08/10 20:12, , 12F
08/10 20:12, 12F
→
08/10 20:14, , 13F
08/10 20:14, 13F
→
08/10 20:17, , 14F
08/10 20:17, 14F
→
08/10 20:18, , 15F
08/10 20:18, 15F
推
08/10 20:19, , 16F
08/10 20:19, 16F
→
08/10 20:19, , 17F
08/10 20:19, 17F
→
08/10 20:20, , 18F
08/10 20:20, 18F
→
08/10 20:21, , 19F
08/10 20:21, 19F
推
08/10 20:23, , 20F
08/10 20:23, 20F
→
08/10 20:25, , 21F
08/10 20:25, 21F
→
08/10 20:25, , 22F
08/10 20:25, 22F
推
08/10 20:27, , 23F
08/10 20:27, 23F
→
08/10 20:27, , 24F
08/10 20:27, 24F
→
08/10 20:29, , 25F
08/10 20:29, 25F
推
08/10 20:37, , 26F
08/10 20:37, 26F
→
08/10 20:42, , 27F
08/10 20:42, 27F
→
08/10 20:46, , 28F
08/10 20:46, 28F
→
08/10 20:48, , 29F
08/10 20:48, 29F
→
08/10 20:49, , 30F
08/10 20:49, 30F
→
08/10 20:50, , 31F
08/10 20:50, 31F
推
08/10 20:52, , 32F
08/10 20:52, 32F
→
08/10 20:55, , 33F
08/10 20:55, 33F
推
08/10 21:05, , 34F
08/10 21:05, 34F
推
08/10 21:11, , 35F
08/10 21:11, 35F
→
08/10 22:36, , 36F
08/10 22:36, 36F
→
08/10 22:39, , 37F
08/10 22:39, 37F
→
08/10 22:41, , 38F
08/10 22:41, 38F
→
08/10 22:44, , 39F
08/10 22:44, 39F
→
08/10 22:56, , 40F
08/10 22:56, 40F
推
08/10 23:04, , 41F
08/10 23:04, 41F
→
08/10 23:04, , 42F
08/10 23:04, 42F
→
08/10 23:17, , 43F
08/10 23:17, 43F
→
08/10 23:18, , 44F
08/10 23:18, 44F
→
08/10 23:20, , 45F
08/10 23:20, 45F
推
08/10 23:22, , 46F
08/10 23:22, 46F
→
08/10 23:29, , 47F
08/10 23:29, 47F
推
08/10 23:33, , 48F
08/10 23:33, 48F
推
08/10 23:35, , 49F
08/10 23:35, 49F
→
08/10 23:51, , 50F
08/10 23:51, 50F
→
08/10 23:52, , 51F
08/10 23:52, 51F
→
08/10 23:53, , 52F
08/10 23:53, 52F
→
08/11 00:43, , 53F
08/11 00:43, 53F
→
08/11 00:46, , 54F
08/11 00:46, 54F
→
08/11 00:47, , 55F
08/11 00:47, 55F
→
08/11 00:49, , 56F
08/11 00:49, 56F
推
08/11 01:15, , 57F
08/11 01:15, 57F
→
08/11 01:16, , 58F
08/11 01:16, 58F
→
08/11 01:17, , 59F
08/11 01:17, 59F
→
08/11 01:18, , 60F
08/11 01:18, 60F
推
08/11 01:21, , 61F
08/11 01:21, 61F
→
08/11 01:23, , 62F
08/11 01:23, 62F
→
08/11 06:57, , 63F
08/11 06:57, 63F
→
08/11 06:59, , 64F
08/11 06:59, 64F
→
08/11 08:09, , 65F
08/11 08:09, 65F
→
08/11 08:16, , 66F
08/11 08:16, 66F
→
08/11 08:17, , 67F
08/11 08:17, 67F
→
08/11 14:51, , 68F
08/11 14:51, 68F
推
08/11 15:51, , 69F
08/11 15:51, 69F
→
08/11 15:51, , 70F
08/11 15:51, 70F
→
08/11 17:57, , 71F
08/11 17:57, 71F
→
08/11 17:58, , 72F
08/11 17:58, 72F
→
08/11 19:21, , 73F
08/11 19:21, 73F
→
08/11 20:21, , 74F
08/11 20:21, 74F
→
08/11 20:22, , 75F
08/11 20:22, 75F
→
08/11 20:23, , 76F
08/11 20:23, 76F
→
08/11 20:24, , 77F
08/11 20:24, 77F
→
08/11 20:24, , 78F
08/11 20:24, 78F
→
08/11 20:25, , 79F
08/11 20:25, 79F
→
08/11 20:25, , 80F
08/11 20:25, 80F
→
08/11 20:26, , 81F
08/11 20:26, 81F
→
08/11 20:27, , 82F
08/11 20:27, 82F
→
08/11 20:28, , 83F
08/11 20:28, 83F
噓
08/11 20:43, , 84F
08/11 20:43, 84F
→
08/11 20:45, , 85F
08/11 20:45, 85F
→
08/11 20:49, , 86F
08/11 20:49, 86F
→
08/11 20:51, , 87F
08/11 20:51, 87F
推
08/12 17:41, , 88F
08/12 17:41, 88F
→
08/12 17:42, , 89F
08/12 17:42, 89F
→
08/12 17:45, , 90F
08/12 17:45, 90F
→
08/12 20:06, , 91F
08/12 20:06, 91F
→
08/12 20:07, , 92F
08/12 20:07, 92F
→
08/12 20:08, , 93F
08/12 20:08, 93F
→
08/12 20:08, , 94F
08/12 20:08, 94F
→
08/12 20:10, , 95F
08/12 20:10, 95F
→
08/12 20:11, , 96F
08/12 20:11, 96F
→
08/12 20:16, , 97F
08/12 20:16, 97F
推
08/12 20:22, , 98F
08/12 20:22, 98F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):