Не до конца понимаю Наследование в с++

69
15 февраля 2022, 14:50

Что такое наследование в с++? Вот написал я класс

class IODevice
{
private:
public:
IODevice();
int readData(int address_device, int addr, int nb, unsigned short int* tab_reg);
int writeData(int address_device, int addr, int nb, unsigned short int *tab_reg);
int readId(int address_device, int size, unsigned char* text);
};

Если я унаследую этот класс в нескольких классах "class_1", "class_2". И "class_2" передам во второй поток, то как будет происходить обращение к методам класса "IODevice"? При наследование, выделяется память и туда копируется объект класса родителя или происходит обращение к одному классу родителю?

Answer 1

Если говорить в общем, то в С++ наследование как матрешка. Все экземпляры класса-потомка имеют в своем составе экземпляр класса-предка. Для экземпляров классов-потомков доступны методы класса-предка (применительно к экземпляру класса-предка, входящего в состав класса-потомка).

Ну и есть разные нюансы, связанные с областью видимости методов и полей-данных. Но это уже подробности.

Answer 2

При создании наследника выделяется память под объект наследника, в который включен объект предка. Он не копируется, он создается в памяти, выделенной наследнику, как часть конструирования наследника.

READ ALSO
Шаблонное продвижение типа

Шаблонное продвижение типа

Есть шаблонная функция, которая должна считать сумму двух значений одного типаКак узнать (с помощью <type_traits>?) возвращаемый тип этой функции,...

65
Нужна идея для проекта

Нужна идея для проекта

В общем, нужна идея для проекта(всего скорее open source), стаж 45 года знаю c++

67
CUDA вызов kernel в цикле

CUDA вызов kernel в цикле

Стоит задача, нужно вызывать ядро в цикле, но после первой итерации скалярное произведение начинает считать неправильноЯдро:

93