網上看見一段**,是關於類物件作為函式的引數,其中有幾點知識,貼出來大家一起學習。
直接來看**:
#include #include using namespace std;
class people
;people::people(char *namestr,int i)
people::~people()
char *people::getname()
int people::getage()
void display(people x)
執行時,會呼叫預設拷貝建構函式,所以x物件中的name屬性沒有賦值,指向了未知的位址,因此x.getname()會出錯;
解決的辦法有兩個:
1.使用引用傳參
void display(people& x)
void display(const people& x);
2.顯示定義拷貝建構函式
people(const people& x)
物件作為函式引數
物件作為函式的引數時,其傳遞過程較為複雜,傳遞方式比較獨特。其傳參過程與陣列不同 陣列變數的名稱代表陣列的首位址,而物件的變數名稱卻不能代表物件的首位址。傳參時不會像陣列那樣以首位址作為函式的引數傳遞,而是先將物件中的所有資料進行備份 複製 將複製的資料作為形參傳遞到呼叫函式中去 類物件中的資料成員...
物件作為函式引數 類外定義成員函式
一 物件作為函式引數 物件也可以作為函式的引數傳遞給函式,其轉遞方法與傳遞其他型別的資料一樣,可採用 值傳遞和位址傳遞兩種方法。值傳遞時是把 物件的拷貝 而不是本身傳遞給函式,函式中對引數 物件的任何修改都不會影響呼叫該函式的物件本身 而位址傳遞 時,呼叫該函式的物件與引數物件共 用同乙個位址 所以...
物件作為引數
在這個例子中,我們將isequal 功能是價值流的乙個朋友。isequal 取兩個值物件作為引數。因為isequal 是價值類的朋友,它可以訪問所有的值物件的私有成員。在這種情況下,它使用的訪問在兩個物件做乙個比較,並返回true,如果他們是平等的。乙個函式可以同時對多個類的乙個朋友。例如,考慮下面...