簡體   English   中英

如果其中一個具有引用,如何定義兩個具有相同名稱和參數的函數?

[英]How to define two functions with the same name and parameters, if one of them has a reference?

我有代碼:

int SomeClass::sum(int x)
{
    return x+=x;
}

int SomeClass::sum(int & x)
{
    return x+=x;
}

....

int num = 0;
int result = sum(num);

那行不通。 我如何使用這兩種功能,並在全部使用它們時指出要使用的功能?

您可以提供int&const int&兩個不同的重載,這可能會以某種方式滿足您的需求...

但是整個代碼有點奇怪...在按值獲取參數的函數中,您正在修改它( += ),而只讀取它可能有意義,則return x+x; 在采用引用的重載中,您將同時修改參數並返回新值。 有點奇怪。

除此之外, sum是乘以2的函數的可怕名稱。

C++不能有這樣的功能。 必須為實例sumByCopysumByRef命名不同的sumByRef 您如何期望編譯器在每個點上決定要引用哪個?

您可以通過這種方式重載,如果您不直接調用它們中的任何一個,它將編譯OK。 但是,當您調用sum(num)時,它將引起歧義。 因此,提供這些函數的重載是沒有意義的,因為我們不能直接調用它們。 這種重載是沒有用的,並且違反了良好實踐。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM