C++程序设计POJ》《WEEK6 多态与虚函数》《编程作业》
#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; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix