Вопросы по теме 'virtual-functions'
Идиома виртуального конструктора — добродетельное или полное заблуждение
Одно из золотых правил C++ заключается в том, что время жизни экземпляра начинается, когда его конструктор успешно завершается, и заканчивается, когда начинается его деструктор.
Из этого правила мы делаем вывод, что НЕ рекомендуется вызывать...
782 просмотров
schedule
08.12.2022
Использование возможностей виртуальных функций
Рассмотрим следующий пример кода:
class Base {
public:
void f();
virtual void vf();
};
class Derived : public Base {
public:
void f();
void vf();
};
#include <iostream>
using namespace std;
void Base::f() {
cout...
203 просмотров
schedule
15.11.2023
Почему виртуальная таблица требуется только в случае виртуальных функций?
Из http://www.learncpp.com/cpp-tutorial/125-the-virtual-table/ , такой код, как
class Base
{
public:
virtual void function1() {};
virtual void function2() {};
};
class D1: public Base
{
public:
virtual void function1() {};
};
class...
481 просмотров
schedule
18.12.2023
Требуется разъяснение по виртуальным функциям и закрытым членам класса
В С++, если общедоступная виртуальная функция базового класса имеет ссылку на поле частного члена, а производный класс не переопределяет этот метод, тогда эта ссылка будет указывать на частный член производного класса.
113 просмотров
schedule
16.01.2024
Виртуальная функция С++ против указателя функции-члена (сравнение производительности)
Вызовы виртуальных функций могут быть медленными из-за того, что виртуальные вызовы требуют дополнительного индексированного уважения к v-таблице, что может привести к промаху кеша данных, а также к промаху кеша инструкций... Не очень хорошо для...
2852 просмотров
schedule
06.12.2023
С++, вызывающий виртуальный метод в конструкторе
Я использую родительский класс, который имеет несколько виртуальных методов. Когда я вызываю виртуальный метод в конструкторе, он выдает ошибки LNK2019 и LNK1120 с сообщениями " error LNK2019: unresolved external symbol "protected: virtual int...
1075 просмотров
schedule
19.03.2024
Невозможно переопределить to_String из-за целого числа в C++
У меня есть класс Employee, который имеет несколько подклассов. Я хочу переопределить функцию to_String в моем суперклассе и во всех подклассах, но я не могу заставить ее работать из-за целого числа в суперклассе:
class Employee{
public:...
169 просмотров
schedule
11.12.2022
Как объяснить такое поведение с помощью перегруженных и переопределенных методов?
Может ли кто-нибудь быть таким любезным и объяснить мне, почему этот код показывает Derived.DoWork(double) . Я могу придумать несколько объяснений этому поведению, однако я хочу, чтобы кто-нибудь разъяснил это мне.
using System;
public class...
260 просмотров
schedule
13.10.2022
C++ наследует класс шаблона
У меня есть своеобразная просьба, надеюсь, она не слишком надуманная и может быть выполнена.
У меня есть класс шаблона
template<class T> class Packable
{
public:
// Packs a <class T> into a Packet (Packet...
140 просмотров
schedule
26.11.2023
Как чисто виртуальные методы реализованы в Python?
Я пока не нашел как. Тем временем я в настоящее время использую вот так:
@abc.abstractmethod
def pure_virtual_method(self, a, b):
"""
Method description.
:param a: Whatever...
:param b: Whatever...
:returns:...
210 просмотров
schedule
13.12.2022
Как компилятор узнает, какая запись в vtable соответствует виртуальной функции?
Допустим, у нас есть несколько виртуальных функций в родительском и производном классах. Для этих виртуальных функций будет создана таблица vtable в таблице vtable как для родительского производного класса.
Как компилятор узнает, какая запись в...
1651 просмотров
schedule
18.04.2024
Периодически прерванный сброс ядра. Может быть, ошибка static_cast?
Я пишу нейронную сеть обратного распространения на основе графа в качестве личного проекта. Все еще на передней опорной ступеньке. Он компилируется. Успешно работает в половине случаев, сбой на самом последнем шаге в половине случаев. Похоже, он...
96 просмотров
schedule
06.05.2024
Вызов виртуального метода из базы
Я пытаюсь создать библиотеку для MigraDoc на основе этого примера , который поддерживает различные типы документов. Моя идея состояла в том, чтобы создать базовый класс с виртуальным методом для CreatePage() (метод, отвечающий за макет страницы)....
72 просмотров
schedule
05.02.2024
Зачем добавлять final в функцию-член конечного класса?
Рассмотрим следующий код:
#include <iostream>
class B {
virtual void f() {
std::cout << "Base" << '\n';
}
};
class D final: public Base {
void f() final override {
std::cout << "Derived" <<...
145 просмотров
schedule
23.12.2023
Как получить абстрактные классы шаблонов с типами шаблонов в качестве параметров функции (C++11)
Мне поручили написать класс «binaryExpressionTree», который является производным от класса абстрактного шаблона «binaryTreeType». binaryExpressionTree имеет тип String. В рамках задания я должен переопределить эти 3 виртуальные функции из...
38 просмотров
schedule
04.01.2024
как работают виртуальные функции и что происходит с новым типом возвращаемого значения при назначении?
#include<iostream>
using namespace std;
class Father
{
public:
int a=99;
void MakeAThing(){ cout<<"MakeAThing of father called"<<endl;}
virtual void MakeAThing2(){ cout<<"MakeAThing2 of father called"<<endl;}
};...
40 просмотров
schedule
29.10.2022
Как я могу определить виртуальную функцию, которая принимает производный тип в качестве параметра?
У меня есть родительский класс Obj с пустой виртуальной функцией cmp
class Obj{
public:
virtual int cmp(const Obj& val) = 0;
...
};
Я пытаюсь определить эту функцию в подклассе MyString, но вместо const Obj& в качестве...
105 просмотров
schedule
18.10.2022
Есть ли способ использовать итераторы STL в качестве аргументов без шаблона?
У меня есть class A , который реализует функцию foo , которая принимает в качестве аргументов два итератора (из любого контейнера stl). Для того, что я видел, общий подход заключается в использовании шаблона, как показано здесь:
class A{...
54 просмотров
schedule
18.11.2022