C 通過this呼叫過載的函式

2021-10-25 08:04:05 字數 1002 閱讀 5907

使用可過載的建構函式時,有時使用乙個構造函式呼叫另乙個建構函式很有用。在c#中,可以通過this關鍵字的另一種形式來實現該操作

下面來看一下案例

class

program

y=",t1.x,t1.y)

; console.

writeline

("t2 x= y="

, t2.x, t2.y)

; console.

writeline

("t3 x= y="

, t3.x, t3.y);}

}class

xycooord

public

xycooord

(xycooord obj)

:this

(obj.x, obj.y)

public

xycooord

(int i,

int j)

}

結果:

這是2個引數的建構函式

這是沒有引數的建構函式!

這是2個引數的建構函式

這是2個引數的建構函式

這是乙個物件的引數!

t1 x=0 y=0

t2 x=8 y=9

t3 x=8 y=9

結果可以看出,在執行建構函式時候,先執行this關鍵字指定引數列表相匹配的過載建構函式,然後再執行原始建構函式。

通過this呼叫過載建構函式可以避免**的不必要重複。

另乙個優點是在未顯示地指定引數時可以使用隱含的「預設引數」建立建構函式。例如:

public

xycooord

(int x)

:this

(x,x)

該建構函式自動預設y和x值相等,當然,必須謹慎使用"預設引數"因為誤用他們容易讓類使用者產生困惑。

函式呼叫符過載

經常見到 std accumulate numbers,numbers 3,init,std minus 這種使用方法 1 其實,std minus 還是表示乙個函式 minus.operator 2 std minus 是乙個類,不是乙個物件,std minus 其實是呼叫的建構函式 也就是說,這...

c語言中通過函式指標實現函式過載

我們都知道過載是c 物件導向的特性。c語言中是不存在的。所謂過載簡單來說就是乙個函式名可以實現不同的功能,要麼輸入引數不同或者引數個數不同,要麼返回型別不同。例如函式add 在c 中可以輕易實現int,double等不同型別引數的相加功能,而在c語言中卻不能這樣實現。c語言中實現過載功能,或者準確來...

java 函式 函式呼叫 函式過載

1.package k1 public class l1 public static int fun int num 控制台輸出結果 17 2.package k1 public class l1 public static int fun public static int fun int x,i...