Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > Общие вопросы .NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.09.2015, 14:52   #1
RAFA91
Заблокирован
 
Регистрация: 06.02.2011
Сообщений: 1,999
По умолчанию Переопределение функции

Почему при выполнении b.func_1(); не получаю ошибку ?

в с++ вроде так незя.

Код:
ref class A
{
public:
         void func_1() {}
};

ref class B : A
{
public:
          void func_1(int a) {}
};
Код:
B b;

b.func_1();
RAFA91 вне форума Ответить с цитированием
Старый 30.09.2015, 15:04   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

С чего бы нельзя? Где тут переопределение? Это перегрузка (overload), а не переопредение (override). Просто две функции с разными параметрами.

Это вроде только в чистом С нельзя создать функцию с тем же именем, но разными параметрами.

И даже если бы в B было func_1(), то это было бы скрытие, а не переопределение. В C# был бы варнинг и для его устранения можно было бы добавить слово new перед определением метода. (ну или сделать нормальное переопределение с virtual/abstract в А и override в B)
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.

Последний раз редактировалось Alex11223; 30.09.2015 в 15:12.
Alex11223 вне форума Ответить с цитированием
Старый 30.09.2015, 15:15   #3
RAFA91
Заблокирован
 
Регистрация: 06.02.2011
Сообщений: 1,999
По умолчанию

в чистом с++ это бы не работалоhttp://ideone.com/kU8IB1

Последний раз редактировалось RAFA91; 30.09.2015 в 15:19.
RAFA91 вне форума Ответить с цитированием
Старый 30.09.2015, 15:29   #4
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

А, точно. Ну все равно это перегрузка, а не переопределение.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 30.09.2015, 15:39   #5
RAFA91
Заблокирован
 
Регистрация: 06.02.2011
Сообщений: 1,999
По умолчанию

термин перегрузка в чистом с++ походу в данном случае не катит.

void func_1(int a) скрыла или заменила void func_1()

но могу врать

Последний раз редактировалось RAFA91; 30.09.2015 в 15:41.
RAFA91 вне форума Ответить с цитированием
Старый 30.09.2015, 15:41   #6
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

С чего бы не катит? Просто С++ не разрешает так перегружать методы в разных классах ("скрывает" методы с одинаковым именем из базового класса, если не добавить using A::func_1 )
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Переопределение метода Gothic Angelos Общие вопросы по Java, Java SE, Kotlin 1 23.05.2013 19:23
Переопределение операций zink Помощь студентам 0 21.01.2013 01:10
Переопределение деструктора avd Общие вопросы Delphi 2 31.01.2011 11:16
переопределение операции Ver0nica Помощь студентам 0 06.05.2010 14:30
Наследование и переопределение. Lunex.08 Общие вопросы C/C++ 3 29.09.2009 09:23