Запитання з тегом «virtual-functions»

В об'єктно-орієнтованому програмуванні віртуальна функція або віртуальний метод - це функція або метод, поведінку яких можна переосмислити в межах спадкового класу функцією з однаковою підписом. Ця концепція є дуже важливою складовою частиною поліморфізму об'єктно-орієнтованого програмування (ООП).


25
Навіщо нам потрібні віртуальні функції в C ++?
Я вивчаю C ++ і я просто вступаю у віртуальні функції. З того, що я прочитав (у книзі та в Інтернеті), віртуальні функції - це функції базового класу, які ви можете перекрити у похідних класах. Але раніше в книзі, коли я дізнавався про базове успадкування, я зміг змінити базові функції …

7
Чи можна викликати віртуальну функцію базового класу, якщо я її переосмислюю?
Скажіть, у мене є заняття Fooта Barналаштовано так: class Foo { public: int x; virtual void printStuff() { std::cout << x << std::endl; } }; class Bar : public Foo { public: int y; void printStuff() { // I would like to call Foo.printStuff() here... std::cout << y << std::endl; …

13
Чи може шаблон функції члена класу бути віртуальним?
Я чув, що шаблони функцій членів класу C ++ не можуть бути віртуальними. Це правда? Якщо вони можуть бути віртуальними, що є прикладом сценарію, в якому можна було б використовувати таку функцію?

5
Чи ключове слово "переосмислити" - це лише перевірка перекритого віртуального методу?
Наскільки я розумію, введення overrideключового слова в C ++ 11 є не більше ніж перевірка , щоб переконатися , що функція реалізується є overrideІНГ з virtualфункції в базовому класі. Це все?


13
Чи справді вбудовані віртуальні функції не мають сенсу?
У мене виникло це питання, коли я отримав коментар з огляду коду, в якому говорилося, що віртуальним функціям не потрібно вбудовувати вбудовані. Я думав, що вбудовані віртуальні функції можуть стати в нагоді в сценаріях, коли функції викликаються безпосередньо на об'єктах. Але мені прийшов контр-аргумент - чому б хотілося визначити віртуальний, …


15
Віртуальні функції та продуктивність - C ++
У дизайні класу я широко використовую абстрактні класи та віртуальні функції. У мене було відчуття, що віртуальні функції впливають на продуктивність. Це правда? Але я вважаю, що ця різниця в роботі не помітна і виглядає так, що я роблю передчасну оптимізацію. Правильно?

12
Як реалізуються віртуальні функції та vtable?
Всі ми знаємо, які віртуальні функції є в C ++, але як вони реалізуються на глибокому рівні? Чи можна змінити Vtable або навіть безпосередньо отримати доступ під час його виконання? Чи існує vtable для всіх класів або лише для тих, хто має хоча б одну віртуальну функцію? Чи мають абстрактні …

6
Чому методи інтерфейсу C # не оголошуються абстрактними або віртуальними?
Методи C # в інтерфейсах оголошуються без використання virtualключового слова та переосмислюються у похідному класі без використання overrideключового слова. Чи є для цього причина? Я припускаю, що це просто зручність у мові, і очевидно, CLR знає, як це впоратися під обкладинками (методи за замовчуванням не є віртуальними), але чи є …

9
Яка вартість продуктивності наявності віртуального методу в класі C ++?
Наявність хоча б одного віртуального методу в класі C ++ (або будь-якого з його батьківських класів) означає, що у класу буде віртуальна таблиця, і кожен екземпляр матиме віртуальний покажчик. Тож вартість пам'яті цілком зрозуміла. Найважливішою є вартість пам'яті для екземплярів (особливо якщо екземпляри невеликі, наприклад, якщо вони просто призначені для …

8
Звідки беруться збої "чистого віртуального виклику функції"?
Я іноді помічаю програми, які виходять з ладу на моєму комп’ютері з помилкою: "чистий виклик віртуальної функції". Як ці програми навіть компілюються, коли об’єкт не може бути створений абстрактним класом?

9
Чому C # реалізує методи як невіртуальні за замовчуванням?
На відміну від Java, чому C # розглядає методи як не віртуальні функції за замовчуванням? Чи швидше це питання ефективності, а не інших можливих результатів? Мені нагадується читати абзац від Андерса Хейльсберга про декілька переваг, які має існуюча архітектура. Але як щодо побічних ефектів? Чи справді корисно мати за замовчуванням …

9
Безпечно перекрийте віртуальними функціями C ++
У мене базовий клас з віртуальною функцією, і я хочу перекрити цю функцію у похідному класі. Чи є якийсь спосіб змусити компілятор перевірити, чи дійсно функція, яку я декларував у похідному класі, перекриває функцію в базовому класі? Я хотів би додати якийсь макрос або щось, що гарантує, що я випадково …

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.