#include <iostream> using namespace std; class A { public: A() { } virtual void func() { cout << "A::func" << endl; } virtual void fund() { cout << "A::fund" << endl; } void fun() { cout << "A::fun" << endl; } }; class B :public A { public: B() { func(); } void fun() { func(); } }; class C : public B { public: C() { } void func() { cout << "C::func" << endl; } void fund() { cout << "C::fund" << endl; } }; int main() { A * pa = new B(); pa->fun(); pa->fun(); // 不是多态,调用普通函数 B * pb = new C(); pb->fun(); while (1); return 0; }
//A::func
//A::fun
//A::func
//C::func
001:看上去像多态
-
总时间限制:
- 1000ms 内存限制:
- 65536kB
-
描述
-
程序填空产生指定输出
-
#include <iostream> using namespace std; class B { private: int nBVal; public: void Print() { cout << "nBVal="<< nBVal << endl; } void Fun() {cout << "B::Fun" << endl; } B ( int n ) { nBVal = n;} };
// 在此处补充你的代码
-
int main() { B * pb; D * pd; D d(4); d.Fun(); pb = new B(2); pd = new D(8); pb -> Fun(); pd->Fun(); pb->Print (); pd->Print (); pb = & d; pb->Fun(); pb->Print(); return 0; }
输入
- 无 输出
-
D::Fun
B::Fun
D::Fun
nBVal=2
nBVal=24
nDVal=8
B::Fun
nBVal=12
样例输入
-
无
样例输出
-
D::Fun B::Fun D::Fun nBVal=2 nBVal=24 nDVal=8 B::Fun nBVal=12
/* 001:看上去像多态 */ #include <iostream> using namespace std; class B { private: int nBVal; public: void Print() { cout << "nBVal=" << nBVal << endl; } void Fun() { cout << "B::Fun" << endl; } B(int n) { nBVal = n; } }; // 在此处补充你的代码 class D :public B { private: int nDVal; public: void Print() { B::Print(); cout << "nDVal=" << nDVal << endl; } void Fun() { cout<< "D::Fun" << endl; } D(int n) :B(3*n) { nDVal = n; } }; int main() { B * pb; D * pd; D d(4); d.Fun(); // D::Fun pb = new B(2); pd = new D(8); pb->Fun(); //B::Fun pd->Fun(); //D::Fun pb->Print(); //nBVal=2 pd->Print(); // pb = &d; pb->Fun();//B::Fun pb->Print();//nBVal=12 while (1); return 0; }
002:Fun和Do
-
总时间限制:
- 1000ms 内存限制:
- 65536kB
-
描述
-
程序填空输出指定结果
-
#include <iostream> using namespace std; class A { private: int nVal; public: void Fun() { cout << "A::Fun" << endl; }; void Do() { cout << "A::Do" << endl; } }; class B:public A { public: virtual void Do() { cout << "B::Do" << endl;} }; class C:public B { public: void Do( ) { cout <<"C::Do"<<endl; } void Fun() { cout << "C::Fun" << endl; } }; void Call(
// 在此处补充你的代码
-
) { p.Fun(); p.Do(); } int main() { C c; Call( c); return 0; }
输入
- 无 输出
-
A::Fun
C::Do
样例输入
-
None
样例输出
-
A::Fun C::Do
/* 002:Fun和Do */ #include <iostream> using namespace std; class A { private: int nVal; public: void Fun() { cout << "A::Fun" << endl; }; void Do() { cout << "A::Do" << endl; } }; class B :public A { public: virtual void Do() { cout << "B::Do" << endl; } }; class C :public B { public: void Do() { cout << "C::Do" << endl; } void Fun() { cout << "C::Fun" << endl; } }; void Call(B &p // 在此处补充你的代码 ) { p.Fun(); p.Do(); } int main() { C c; Call(c); while (1); return 0; }
003:这是什么鬼delete
-
总时间限制:
- 1000ms 内存限制:
- 65536kB
-
描述
-
程序填空输出指定结果
-
#include <iostream> using namespace std; class A { public: A() { }
// 在此处补充你的代码
-
}; class B:public A { public: ~B() { cout << "destructor B" << endl; } }; int main() { A * pa; pa = new B; delete pa; return 0; }
输入
- 无 输出
-
destructor B
destructor A
样例输入
-
无
样例输出
-
destructor B destructor A
/* 003:这是什么鬼delete */ #if 1 #include <iostream> using namespace std; class A { public: A() { } // 在此处补充你的代码 virtual ~A()// 虚析构函数,先析构派生类, 再析构基类 { cout << "desturctor A" << endl; } }; class B :public A { public: ~B() { cout << "destructor B" << endl; } }; int main() { A * pa; pa = new B; delete pa; // destructor B desturctor A return 0; } #endif
004:怎么又是Fun和Do
-
总时间限制:
- 1000ms 内存限制:
- 65536kB
-
描述
-
程序填空输出指定结果
-
#include <iostream> using namespace std; class A { private: int nVal; public: void Fun() { cout << "A::Fun" << endl; }; virtual void Do() { cout << "A::Do" << endl; } }; class B:public A { public: virtual void Do() { cout << "B::Do" << endl;} }; class C:public B { public: void Do( ) { cout <<"C::Do"<<endl; } void Fun() { cout << "C::Fun" << endl; } }; void Call(
// 在此处补充你的代码
-
) { p->Fun(); p->Do(); } int main() { Call( new A()); Call( new C()); return 0; }
输入
- 无 输出
-
A::Fun
A::Do
A::Fun
C::Do
样例输入
-
无
样例输出
-
A::Fun A::Do A::Fun C::Do
来源
/* 004:怎么又是Fun和Do */ #include <iostream> using namespace std; class A { private: int nVal; public: void Fun() { cout << "A::Fun" << endl; }; virtual void Do() { cout << "A::Do" << endl; } }; class B :public A { public: virtual void Do() { cout << "B::Do" << endl; } }; class C :public B { public: void Do() { cout << "C::Do" << endl; } void Fun() { cout << "C::Fun" << endl; } }; void Call(A* p // 在此处补充你的代码 ) { p->Fun(); p->Do(); } int main() { Call(new A()); Call(new C()); return 0; }