Loading...

Във форума е въведено ограничение, което позволява на потребителите единствено да разглеждат публикуваните въпроси.

manito_17711 avatar manito_17711 43 Точки

[C++ Inheritance] Извикване на функция от обект и от указател към обект...

Здравейте,

 

Имаме класове родител и наследник. Родителя има функция, която се презаписва от наследника.

 

#include <iostream>

class Base
{
public:
	virtual void foo() { std::cout << "Base class foo\n"; };
};


class Derived : public Base
{
public:
	void foo() { std::cout << "Derived class foo\n"; };
};


int main()
{
	Base *d1 = new Derived();
	d1->foo(); // Print "Derived class foo"
	delete d1;

	
	Base d2 = Derived();
	d2.foo(); // Print "Base class foo"

	return 0;
}

 

Ако направим поинтер от тип на "базовия" клас и го инициализираме с обект от тип "наследник", и извикаме презаписаната функция - извиква се функцията от наследника. - ок...

 

Ако направим обект от тип на "базовия" клас и го инициализираме с обект от тип "наследник", и извикаме презаписаната функция - извиква се функцията от родителя.  - проблем...

 

Въпросът ми е към втората част - не трябва ли да се извика презаписаната фунцкия при положение, че обекта е от тип наследник? Защо се извиква функцията на базовия клас?

 

Поздрави,

Ники 

Тагове:
1
C++ Programming
Filkolev avatar Filkolev 4482 Точки

Потърси в Гугъл object slicing. На телефон съм и не мога да вляза в подробности, но е полезно да се знае.

0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.