類物件作為函式引數

2021-07-27 07:01:24 字數 567 閱讀 8529

網上看見一段**,是關於類物件作為函式的引數,其中有幾點知識,貼出來大家一起學習。

直接來看**:

#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,如果他們是平等的。乙個函式可以同時對多個類的乙個朋友。例如,考慮下面...