簡體   English   中英

使用“Const”的函數重載

[英]Function overload using 'Const'

有2個相同的功能。 一個采用帶有const關鍵字的參數,另一個采用 - 沒有。

void A(const int* p);
void A(int* p);

int main()
{
    int x;
    A(&x);
    return 0;
}

void A(const int* p)
{
    cout << "2" << endl;
}

void A(int* p)
{
    cout << "1" << endl;
}
  1. 是函數重載嗎?
  2. 為什么沒有const 的函數會被稱為我的情況?

是函數重載嗎?

是的。 這兩個函數具有相同的名稱但參數不同,因此它們是重載。

為什么沒有const會被稱為我的情況?

因為x不是const 嘗試使用指向const int的指針,您將獲得另一個重載:

const int y;
A(&y);

我認為這是最初問題的變體:來自 Stroustrup's tour of c++

template<typename T>
class C {
    ...
    public:
    ...
    T& operator[](int i);
    const T& operator[](int i) const;
}

因此,據我所知,第二種方法將針對不打算修改 this-object 的情況。

我只是想知道編譯器是否能夠在每種相關情況下准確猜測..

暫無
暫無

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

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