Добрый день, сильно интересует, что из этого лучше использовать и почему.
class Parent {
public:
Parent(void (*fun)()) {
get = fun;
}
void(*get)();
};
и
class Parent {
public:
int i;
Parent(int i) {
this->i = i;
}
void get() virtual;
};
class Child1 : Parent {
public:
void get() {
cout << "Error#1";
}
};
Виртуальные методы вызываются через таблицу виртуальных функций. Она общая для всех объектов одного и того же класса, а потому существует в единственном экземпляре в секции константных данных. А объекты просто ссылаются на эту таблицу через неявно хранимое поле vptr
.
Поэтому виртуальные методы используют там, где одна и та же функция применяется во всех экземплярах класса без изменений.
Ну а члены-указатели хранятся непосредственно внутри объекта, из-за чего происходит дублирование. Как результат, у каждого объекта оказывается независимая копия.
Поэтому указатели на функции используют, если каждый экземпляр одного и того же класса использует какой-то свой вариант функции, возможно, даже передаваемый извне.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Есть модуль nodejs написанный на С++ (с использованием N-api)
int t = 10; cout << t << endl << t * 2 << endl << --t;