Mühazirə14: C++-da varislik və virtual funksiyalar


Təmiz virtual funksiya (pure virtual function)



Yüklə 0,59 Mb.
səhifə8/9
tarix19.06.2022
ölçüsü0,59 Mb.
#61805
növüMühazirə
1   2   3   4   5   6   7   8   9
Varislik.Virtual funk.

14.7. Təmiz virtual funksiya (pure virtual function)-baza sinifində elan olunan lakin təyin olunmayan funksiyaya deyilir. Bu funksiya 0 mənimsədilmə ilə elan olunur.
Sintaksis:
virtual tip funksiya_adi(parametrler_ardıcıllıgi) = 0;
Ən azı bir təmiz virtual funksiyası olan sinifə-abstrakt sinif deyilir. Abstrakt siniflər varis siniflər üçün vahid interfeys (“vahid idarə etmə pultu” ) hazırlamaq üçün istifadə olunurlar. C++ da abstrakt sinifinterfeys terminləri eyni mənanı daşıyır.
məsələn: // Abstrakt sinif (An abstract class)
class Test
{
//Sinifin üzv-verilənləri(Data members of class)
public:
// Təmiz virtual funksiya (Pure Virtual Function)
virtual void show() = 0;
/* Digər üzv funksiyalar */
};
Baza sinifdə təmiz virtual funksiyanın olması törəmə siniflərə də eyni adlı (prototipli) funksiyaya malik olmalarını diqtə edir.
Abstrakt sinifin xüsusiyyətləri:
1. Abstrakt sinifin obyekt(lər)i olmur. Çünki onda funksiyalar elan olunub amma təyin olunmayıb.
Məsələn:
#include
using namespace std;
class Test
{
int x;
public:
virtual void show() = 0;
int getX() { return x; }
};
int main(void)
{
Test t; // Sehv! Abstrakt sinifden olan obyekt elan etmək olmaz!
return 0;
}
2. Lakin abstrakt sinif tipi göstərici ola bilər. Bu göstəricini varis sinif(lər) ilə inisializasiya edib sonra istifadə edirlər.(bax mühazirənin 14.4 bölməsinə)
Məsələn:
#include
using namespace std;
class Base
{
public:
virtual void show() = 0;
};
class Derived: public Base
{
public:
void show() { cout << "In Derived \n"; }
};
int main(void)
{
Base *bp = new Derived();
bp->show();
return 0;
}

3. Əgər təmiz virtual funksiya varis sinifdə də təyin olunmursa onda bu varis sinif də abstrakt sinif adlanır. Məsələn:
#include
using namespace std;
class Base
{
public:
virtual void show() = 0;
};

class Derived : public Base { };


int main(void)
{
Derived d; // Sehv!
return 0; }

4. Abstarkt sinif konstuktora destruktora malik ola bilər. Məsələn:


#include
using namespace std;
class Base
{
protected:
int x;
public:
virtual void fun() = 0;
Base(int i) { x = i; }
~Base();
};
class Derived: public Base
{
int y;
public:
Derived(int i, int j):Base(i) { y = j; }
void fun() { cout << "x = " << x << ", y = " << y; }
};
int main(void)
{
Derived d(4, 5);
d.fun();
return 0;
}

C++ -da ancaq təmiz virtual funksiyalardan təşkil olunmuş sinif -interfeys sinif və ya sadəcə interfeys adlanır.


Məsələn: // interfeys sinif (An interface class)
class Robot
{
public:
// Təmiz virtual funksiyalar (Pure Virtual Functions)
virtual void go() = 0;
virtual void walk() = 0;
virtual void talk(ostream &) = 0;
virtual void fire(int x, int y, int z) = 0;
};

------------------------------------------------------------------------------------------------------------------------





Yüklə 0,59 Mb.

Dostları ilə paylaş:
1   2   3   4   5   6   7   8   9




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©azkurs.org 2024
rəhbərliyinə müraciət

gir | qeydiyyatdan keç
    Ana səhifə


yükləyin