C 中,物件作為函式引數的幾種情況

2021-10-10 01:44:10 字數 2079 閱讀 2164

passing objects to functions (物件作為函式引數)

objects as function arguments(物件作為函式引數)

you can pass objects by value or by reference. 

(物件作為函式引數,可以按值傳遞,也可以按引用傳遞)

(1)objects as function return value(物件作為函式引數)

// pass by value

void

print

( circle c )

intmain()

其中,先建立乙個mycircle物件,然後print函式呼叫該物件。

(2)objects reference as function return value(物件引用作為函式引數)

void

print

( circle& c )

intmain()

雖然在呼叫print函式時傳入的引數是物件,但是在print函式定義中,使用了引用型別。

(3)objects pointer as function return value(物件指標作為函式引數)

// pass by pointer

void

print

( circle* c )

intmain()

在呼叫print函式時傳入的引數是建立的物件的位址,在print函式定義中,對mycircle物件進行了解引用。

objects as function return value(物件作為函式返回值)

// class object ;

object f (

/*函式形參*/

)// main() ;

object* f (

/*函式形參*/

)// main() ;

object* f ( object* p,

/*其它形參*/

)// main()

objects reference as function return value(物件引用作為函式返回值)

// class object ;

object& f (

/*函式形參*/);

// do something

return o;

//這是**的用法

}

可行的用法1:

// class object ;

class

x}

o的屬性會被保留。

可行的用法2:

// class object ;

object& f ( object& p,

/*其它形參*/

)// main()

一些高階問題

傳值,傳址,傳指標,傳引用都是騙初學者的。c++中有意義的概念是傳值和傳引用。

differences between a pointer variable and a reference variable

difference between passing by reference vs. passing by value?

C 中物件作為引數傳遞給函式的三種情況

include include using namespace std 物件陣列 物件陣列中的每乙個成員建立時都會使用建構函式 可以建立一維以及二維物件陣列 square s 5 square s 5 5 建立物件陣列的同時,初始化物件陣列的方式 square s 3 class square vo...

物件作為函式引數

物件作為函式的引數時,其傳遞過程較為複雜,傳遞方式比較獨特。其傳參過程與陣列不同 陣列變數的名稱代表陣列的首位址,而物件的變數名稱卻不能代表物件的首位址。傳參時不會像陣列那樣以首位址作為函式的引數傳遞,而是先將物件中的所有資料進行備份 複製 將複製的資料作為形參傳遞到呼叫函式中去 類物件中的資料成員...

c 中關於陣列作為函式引數的幾種方法

由於陣列的元素個數預設情況下是不作為實參內容傳入呼叫函式的,本程式用來討論有此帶來的 相關問題,以及解決問題方法,即給呼叫函式傳遞陣列的元素個數的幾種有效方法並實現它 include include using namespace std void putarray1 int p,int lengt...