فرق داشتن خروجی - هفت خط کد انجمن پرسش و پاسخ برنامه نویسی

وبـــلاگ هــفت خــط کــد


آموزش های برنامه نویسی
۱۹۶ نفر آنلاین
۳۵ عضو و ۱۶۱ مهمان در سایت حاضرند

فرق داشتن خروجی

+1 امتیاز

سلام دوستان کد زیر رو از این لینک برداشتم کد آخرشو ببینید. اما وقتی کد رو اجرا می کنم خروجی که نشون میده با خروجی که در پایین کد در صفحه نوشته شده فرق داره و دیگه جمله  Pure virtual definition نمایش داده نمیشه. علتش چیه؟

#include <iostream>
using namespace std;

class Base
{
	public:
		virtual void show() = 0;
};
void Base::show()
{
	cout << "Pure virtual definition\n";
}
class Derived:public Base
{
	public:
		void show()
		{
			cout << "Implementation of Virtual Function in Derived class";
		}
};
int main()
{
	Base *b;
	Derived d;
	b= &d;
	b->show();
}

 

سوال شده شهریور 19, 1393  بوسیله ی Pashmak (امتیاز 644)   8 15 31
دوباره تگ گذاری شد مهر 9, 1393 بوسیله ی BlueBlade
سلام دوست عزیز!
می شه بگید دقیقا چی کار کردید؟... خروجی ای که می گیرید دقیقا چی هست؟...
من اجراش می کنم، خروجیش این هست:
Implementation of Virtual Function in Derived class
روی Fedora 20 این طوری compile ـش کردم:
g++ pvd.cpp
خروجی که من میگیریم همین جمله ای که شما نوشتید. اما توی لینک نوشته قبل از این جمله، جمله Pure virtual definition هم در خروجی نمایش داده میشه

1 پاسخ

+2 امتیاز
 
بهترین پاسخ
خروجی که اون جا نوشته اشتباه هست حالت معمولی متد کلاس Base صدا زده نمیشه 
اگر بخوای متد show کلاس Base صدا زده بشه باید به این شکل بنویسی :
#include <iostream>
using namespace std;

class Base
{
    public:
        virtual void show() = 0;
};
void Base::show()
{
    cout << "Pure virtual definition\n";
}
class Derived:public Base
{
    public:
        void show()
        {
            Base::show();//inja
            cout << "Implementation of Virtual Function in Derived class";
        }
};
int main()
{
    Base *b;
    Derived d;
    b= &d;
    b->show();
}

http://coliru.stacked-crooked.com/a/168eaaf50a224cf8

 
پاسخ داده شده شهریور 19, 1393 بوسیله ی BlueBlade (امتیاز 15,315)   15 18 89
انتخاب شد شهریور 19, 1393 بوسیله ی Pashmak
...