Описание тега name-hiding
A feature of the C++ language that causes functions in a base class to be hidden by overloads in a derived class.
2
ответа
Java вложенные области видимости и скрытие имен переменных
Я изучаю поиск имен в Java и, исходя из C++, мне показалось интересным, что даже если Java позволяет мне вкладывать как можно больше блоков кода, мне разрешено скрывать имя только в первой вложенной области: // name hiding-shadowing: local variables…
28 сен '15 в 09:21
1
ответ
Скрытие имени и доступ к не-виртуальной функции базового класса (синтаксис)
В следующем коде: #include <iostream> class A { public: void f( float x ) { std::cout << 1; } void g() { std::cout << 11; } }; class B : public A { public: void f( char x ) { std::cout << 2; } void g() { std::cout << 22…
30 апр '13 в 08:41
2
ответа
Имя скрывается при изменении как возвращаемого типа, так и списка аргументов
Мой основной вопрос заключается в том, почему скрытие имени не применимо при изменении как возвращаемого типа, так и списка аргументов. Пожалуйста, обратитесь ниже образец образца. // Example program #include <iostream> #include <string>…
26 апр '16 в 01:16
2
ответа
Ошибка компиляции в отношении сокрытия имени, переопределения и виртуальной таблицы
Я играл в с ++ правило. Я столкнулся с ошибкой, но не могу ее объяснить. Пожалуйста, помогите объяснить, почему произошла ошибка компиляции. Кстати, я не заинтересован в решении проблемы. Спасибо Q1, почему скрытие имени не работает в этом случае? н…
28 янв '14 в 22:57
2
ответа
Перегрузка функции суперкласса
Есть ли в стандарте C++ что-то, что мешает мне перегрузить функцию суперкласса? Начиная с этой пары классов: class A { // super class int x; public: void foo (int y) {x = y;} // original definition }; class B : public A { // derived class int x2; pu…
04 янв '11 в 18:29
2
ответа
Не называет ошибку типа из-за существующего перечисления, но почему?
Я только что получил эту ошибку: "ошибка:" Символ "не называет тип" Я нашел несколько других вопросов Stackru, говорящих о циклических зависимостях, но здесь это не так. На самом деле я мог бы воспроизвести его, поместив это в начало исходного файла…
29 апр '14 в 04:29
4
ответа
Путаница в отношении сокрытия имени и виртуальных функций
Ссылаясь на еще один вопрос Рассмотрим код: class Base { public: virtual void gogo(int a){ printf(" Base :: gogo (int) \n"); }; virtual void gogo(int* a){ printf(" Base :: gogo (int*) \n"); }; }; class Derived : public Base{ public: virtual void gog…
16 апр '12 в 11:26
1
ответ
Почему C++ не поддерживает перегрузку между областями?
Я полагаю, что лучший ответ уже дан здесь: почему переопределенная функция в производном классе скрывает другие перегрузки базового класса? Но меня немного смущает, особенно с утверждением: Чтобы переопределить это поведение, от пользователя требует…
16 июн '16 в 13:58
2
ответа
Приоритет сокрытия имени в наследовании C++
Почему вызов print () из указателя на базовый класс (класс A) работает, а вызов print () из объекта дочернего класса (класс C) не работает? Оператор 1: выдаст "print A" в качестве вывода, так как A::print() является виртуальной функцией, она вызовет…
07 янв '19 в 10:21
2
ответа
C# Наследование, новый модификатор и дженерики
Я с трудом пытаюсь найти правильный подход к этому: Мои структуры данных: public abstract class Flow { public virtual double Value { get; set; } public virtual DateTime Time { get; set; } } public class InboundFlow : Flow { } public class OutboundFl…
13 авг '13 в 15:12
0
ответов
C++ - Почему метод производного класса void m(const T) переопределяет метод базового класса void m(T)?
Случай 1: class T{}; class A { public: virtual void m(T t) { ... } }; class B : public A { public: void m(const T t){ ... } }; int main(){ T t; B b; A* a = &b; a->m(t); } Случай 2: class T{}; class A { public: virtual void m(T& t) { ... }…
30 ноя '15 в 17:26
2
ответа
Почему компилятор C++ (VS2013) выбирает неправильную функцию?
Первый случай #include <iostream> class A { public: virtual void Write(int i) { std::wcout << L"Write(int) is called" << std::endl; } virtual void Write(wchar_t c) { std::wcout << L"Write(wchar_t) is called" << std::end…
13 фев '16 в 14:54
2
ответа
Это относится к тому, что, когда не-переопределенный метод вызывается на объекте подкласса?
Рассмотрим следующий код: class Person { String className = "Person"; void printClassName () { System.out.println("I am " + this.className); System.out.println("I am " + this.getClass().getSimpleName()); } } class Employee extends Person { // intent…
15 фев '18 в 14:01
2
ответа
Разница между использованием не виртуальных функций базового класса и нереализованных виртуальных функций производного класса
Этот вопрос немного связан с тем, каковы различия между переопределением виртуальных функций и сокрытием не виртуальных функций?, но я не спрашиваю о технических деталях, а об использовании не виртуальных и виртуальных функций. Вот небольшой фон. До…
11 ноя '18 в 12:13
1
ответ
Замените имена классов и переменных в фрагменте кода
Я хотел бы вставить некоторые суть моего кода в резюме. Чтобы не понимать, о чем этот код, я хочу заменить все классы, методы и имена переменных на несколько случайных строк автоматически (используя какой-либо скрипт или онлайн-создателя?), Чтобы я …
28 апр '16 в 14:17
1
ответ
Отменить скрытие имени, используя ключевое слово "using". Не работает в классе внуков
Например, в приведенной ниже программе я отменяю скрытие имен, используя ключевое слово "using". Если у меня есть базовый и один производный класс, я получаю ожидаемую неоднозначную ошибку вызова. Но если у меня есть два производных класса (child и …
28 мар '15 в 13:21
2
ответа
C++ Добавление перегруженных методов для определенных специализаций шаблона
У меня довольно интересная проблема: у меня есть два шаблонных класса. Один может принимать любой параметр шаблона, другой более специализированный (для этой игрушечной задачи мы скажем, что он должен принимать числа с плавающей запятой). template&l…
01 май '14 в 17:24
3
ответа
C++ наследование и сокрытие имени
Я знаю, что это не первый вопрос по этому вопросу, но все остальные связанные вопросы (и ответы), которые я прочитал, были немного неуместными, по моему мнению. Взять код #include <iostream> using namespace std ; class Base { public: void meth…
05 окт '15 в 10:29
1
ответ
Скрытие имени параметра шаблона
Меня недавно укусила (упрощенно) struct Base { typedef char T; }; template<typename T> struct Foo : Base { T x[50]; // This is Base::T, not the template parameter }; Другими словами, имя члена класса скрывает параметр шаблона (даже если он исх…
31 мар '15 в 07:05
1
ответ
Почему динамическое связывание может переопределить скрытие имени в C++?
Я узнал, что внутренние имена скрывают внешние имена (таким образом, перегрузка не выходит за рамки), потому что поиск имени идет перед сопоставлением типов. Поэтому я пишу следующий код C++ для игры с этим правилом: class Base { public: virtual voi…
20 фев '19 в 03:11