Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
17
Добавлен:
01.05.2014
Размер:
1.25 Кб
Скачать
		// source module: virtual_base.C

		#include <stream.h>

		class base {

    			public:

			int x;

			base(int xa=0) : x(xa) 	{ cerr << "base(" << xa << ") called\n"; };

			virtual void print() { cerr << "x=" << x << "\n"; };

        			virtual ~base() {		cerr << "~base() called\n";	}

		};



		class d1 : virtual public base {

    			public:

			int y;

			d1(int xa, int ya) : base(xa) { 

			   cerr<<"d1("<<xa<<","<<ya<<") called\n"; 	   y = ya; 

			};

			~d1() { cerr << "~d1() called\n"; };

				void print() { cerr << "y=" << y << "\n"; };

		};



		class d2 : virtual public base {

    			public:

			int z;

			d2(int xa, int za) : base(xa) {

	   			cerr<<"d2("<<xa<<","<<za<<") called\n"; 	   z = za; 

			};

       	 		~d2() { cerr << "~d2() called\n"; };

		};



		class derived : public d1, public d2 {

     			public:

         			int all;

         			derived(int a, int b, int c, int d) :	 base(a), d1(a,b), d2(a,c), all(d)

				{	    cerr << "derived(" << all << ") called\n";	};

			void prints() {	  	base::print();		cerr << "all=" << all << "\n";	};

		};



		int main() {

			derived foo(1,2,3,4);

			foo.prints();

			return 0;
		}
Соседние файлы в папке ch2