ex0305.cpp
来自「Visual+C+++6[1].0实用教程代码 Visual+C+++6[1]」· C++ 代码 · 共 98 行
CPP
98 行
// ex0305.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <iostream.h>
#include <iomanip.h>
class baseClass { //基类baseClass
protected:
int n;
public:
baseClass(int n0){n=n0;} //构造函数
virtual void reversedata()=0; //虚函数reversedata,且为纯虚函数
};
class method1Cla:public baseClass { //派生类method1Cla
public:
method1Cla(int n0):baseClass (n0) {}
void reversedata() {//常界数组求解方法
int a[100];
cout<<"输入"<<n<<"整数:"<<endl;
for(int i=0; i<n; i++)
cin>>a[i];
cout<<"---- 反序输出结果 ----"<<endl;
for(i=n-1; i>=0; i--) cout<<a[i]<<" ";
cout<<endl;
}
};
class method2Cla:public baseClass { //派生类method2Cla
public:
method2Cla(int n0):baseClass (n0) {}
void reversedata() { //动态数组求解方法
int i, *a, *p;
a=new int[n]; //申请大小为n 的动态数组
cout<<"输入"<<n<<"整数:"<<endl;
for(i=0; i<n; i++) cin>>*(a+i);
cout<<"---- 反序输出结果 ----"<<endl;
for(p=a+n-1; p>=a; p--) cout<<*p<<" ";
cout<<endl;
}
};
class method3Cla:public baseClass { //派生类method3Cla
public:
method3Cla(int n0):baseClass (n0) {}
void reversedata() { //指针与链表的求解方法
struct item { //结构类型,用于形成链表项
int data; //存放数据
item * next; //指向本结构的指针,由它“串联”起后项
};
item *first=NULL, *temp; //由first 指向链表首
int i, x;
cout<<"输入"<<n<<"整数:"<<endl;
for(i=0; i<n; i++) {
cin>>x;
temp=new item;
temp->data=x;
temp->next=first;
first=temp;
}
cout<<"---- 反序输出结果 ----"<<endl;
temp=first;
while(temp!=NULL) {
cout<<temp->data<<" ";
temp=temp->next;
}
cout<<endl;
}
};
void f(baseClass *p) { //自定义函数f,形参p 为指向基类的指针
p->reversedata(); //根据p 值的不同去调用不同派生类的虚函数
}
int main(int argc, char* argv[])
{
int n;
cout<<"输入数据长度n=";
cin>>n;
method1Cla obj1(n); //说明method1Cla 类对象obj1
method2Cla obj2(n); //method2Cla 类对象obj2
method3Cla obj3(n); //method3Cla 的类对象obj3
cout<<"===== method1Cla ====="<<endl;
f(&obj1); //常界数组求解方法
cout<<"===== method2Cla ====="<<endl;
f(&obj2); //动态数组求解方法
cout<<"===== method3Cla ====="<<endl;
f(&obj3); //指针与链表的求解方法
return 0;
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?