#include #include #include using namespace std;
class sourcefile
}explicit sourcefile(const char* filename)
: data_(filename)
const char* data_;
int size_;
};int main(int args, char **argv)
g++編譯後生成執行檔案a.out
[le@localhost refarrandpoint]$ nm ./a.out | grep sourcefile
0000000000400b20 w _zn10sourcefilec1epkc
0000000000400b9c w _zn10sourcefilec1ili10eeerat__kc
0000000000400c2c w _zn10sourcefilec1ili20eeerat__kc
0000000000400b20 w _zn10sourcefilec2epkc
0000000000400b9c w _zn10sourcefilec2ili10eeerat__kc
0000000000400c2c w _zn10sourcefilec2ili20eeerat__kc
編譯器為我們生成了三個建構函式,兩個是函式模板的
[le@localhost refarrandpoint]$ ./a.out
consturct ref
consturct point // sourcefile s2(arr2) 呼叫的是傳指標的建構函式,說明陣列預設是用指標傳遞,而不是引用傳遞
consturct ref
consturct point
如果 指標傳遞的建構函式,沒有用explicit。。那輸出都是 consturct point
總結:陣列預設是用指標傳遞,而不是引用傳遞,想要引用傳遞,要麼就不能有傳指標的建構函式,要麼就要像上面一樣用explicit分開出來(好像有點麻煩)
引用傳遞與指標傳遞
1.指標傳遞 指標傳遞本質上是值傳遞,它所傳遞的是乙個位址值。值傳遞的特點 被調函式對形式引數的任何操作都是作為區域性變數進行的,不會影響主調函式的實參變數的值。2.引用傳遞 引用傳遞中,區域性變數棧空間中存放的是由主調函式放進來的實參變數的位址。被調函式對形參的任何操作都被處理成間接定址,即通過棧...
c 值傳遞 指標傳遞 引用傳遞
值傳遞 形參是實參的拷貝,改變形參的值並不會影響外部實參的值。從被呼叫函式的角度來說,值傳遞是單向的 實參 形參 引數的值只能傳入,不能傳出。當函式內部需要修改引數,並且不希望這個改變影響呼叫者時,採用值傳遞。指標傳遞 形參為指向實參位址的指標,當對形參的指向操作時,就相當於對實參本身進行的操作 引...
C 值傳遞 指標傳遞 引用傳遞詳解
值傳遞 形參是實參的拷貝,改變形參的值並不會影響外部實參的值。從被呼叫函式的角度來說,值傳遞是單向的 實參 形參 引數的值只能傳入,不能傳出。當函式內部需要修改引數,並且不希望這個改變影響呼叫者時,採用值傳遞。指標傳遞 形參為指向實參位址的指標,當對形參的指向操作時,就相當於對實參本身進行的操作.引...