Рубрики

C ++ | Перегрузка функций и аргументы по умолчанию | Вопрос 4

Предсказать вывод следующей программы на C ++.

include<iostream>

using namespace std;

   

class Test

{

protected:

    int x;

public:

    Test (int i):x(i) { }

    void fun() const  { cout << "fun() const " << endl; }

    void fun()        {  cout << "fun() " << endl;     }

};

   

int main()

{

    Test t1 (10);

    const Test t2 (20);

    t1.fun();

    t2.fun();

    return 0;

}

(A) Ошибка компилятора
(B) весело ()
fun () const
(C) Fun () Const
fun () const
(D) весело ()
веселье()

Ответ: (Б)
Объяснение: Два метода void fun () const и void fun () имеют одинаковую сигнатуру, за исключением того, что один является const, а другой — нет. Также, если мы более внимательно посмотрим на вывод, мы заметим, что const void fun () вызывается для объекта const, а void fun () вызывается для неконстантного объекта.
C ++ позволяет перегружать методы-члены на основе типа const. Перегрузка на основе типа const может быть полезна, когда функция возвращает ссылку или указатель. Мы можем сделать одну функцию const, которая возвращает константную ссылку или указатель const, другую неконстантную функцию, которая возвращает неконстантную ссылку или указатель. Смотрите далее для более подробной информации.

Перегрузка функций и ключевое слово const
Тест на этот вопрос

Рекомендуемые посты:

C ++ | Перегрузка функций и аргументы по умолчанию | Вопрос 4

0.00 (0%) 0 votes