Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Class X



{ public:

Virtual double A(double x)

{ return x*x; }

Double B(double x)

{ cout<<A(x)<<":2=";

return A(x)/2.; }

};

class Y:public X

{ public:

Double A(double x)

{ return x*x*x; }

};

Int main(void)

{

Y y;

X x;

cout<<"при x=3."<<endl;

cout<<x.B(3.)<<" X"<<endl;

cout<<y.B(3.)<<" Y"<<endl;

}

результат выполнения программы:

при x=3.

9:2=4.5 X A::X=x*x;

27:2=13.5 Y A::Y=x*x*x


Специфической особенностью указателей на классы в С++ является то, что указатель объявленный, как указатель на базовый класс может использоваться, как указатель на любой класс, производный от этого базового. Компилятор при вызове виртуальной функции определяет класс объекта для которого вызывается виртуальная функция и подбирает соответствующую версию функции.


#include<iostream.h>

Class Mammal

{ public:

Mammal():itsAge(1){}

virtual ~Mammal() {}

virtual void Speak() { cout<< " Млекопитающее что-то сказало!\n";}

protected:

Int itsAge;

};

class Dog:public Mammal

{ public:

void Speak(){cout<<"Гафф!\n";}

};

class Cat:public Mammal

{ public:

void Speak(){cout<<"Мурр!\n";}

};

Void VFunc(Mammal);

void PFunc(Mammal*);

void RFunc(Mammal&);

Int main(void)

{

Mammal *prt=0;

Int choice;

While(1)

{

bool fQ=false;

cout<<"1--собака, 2-- кошка, иначе-- млекопитающее, 0-- выход.";

cin>> choice;





Дата публикования: 2014-11-28; Прочитано: 208 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.006 с)...