定义一个基类BaseClass,有公有成员函数fn1( ),fn2( ),函数内打印出类名及函数名,有私有数据成员int i,从它派生出类DerivedClass,有公有成员函数fn1( ),,函数内打印出类名及函数名,私有数据成员int j,在主函数中分别用BaseClass及DerivedClass类的指针去调用fn1( ),fn2,观察运行结果。要求:
(1)注意派生类的构造函数必须写正确
(2)分析通过指针调用成员函数的运行结果。
我写了大概的框架,在此基础上修改即可:
#include<iostream>
using namespace std;
class BaseClass{
public:
void fn1(){
cout<<"BaseClass::fn1()调用"<<endl;
}
void fn2(){
cout<<"BaseClass::fn2()调用"<<endl;
}
private:
int i;
};
class DerivedClass:public BaseClass{
public:
void fn1(){
cout<<"DerivedClass::fn1()调用"<<endl;
}
private:
int j;
};
int main(){
BaseClass *b=new DerivedClass;
b->BaseClass::fn1();
b->fn1();
b->fn2();
}
可能写的不正确,求赐教
#include<stdio.h>
#pragma warning(disable:4996)
#include<iostream>
using namespace std;
class BaseClass{
public:
virtual void fn1(){
cout << "BaseClass::fn1()调用" << endl;
}
void fn2(){
cout << "BaseClass::fn2()调用" << endl;
}
private:
int i;
};
class DerivedClass :public BaseClass{
public:
void fn1(){
cout << "DerivedClass::fn1()调用" << endl;
}
private:
int j;
};
int main(){
BaseClass *b = new DerivedClass;
b->fn1();
b->fn2();
cout << endl;
BaseClass *a = new BaseClass;
a->fn1();
a->fn2();
}
显然基类的fn1应该定义成虚函数,体现多态的作用,否则只是简单的函数覆盖
另外主函数应该分别创建基类和子类的指针,然后各自调用fn1()和fn(2),观察输出信息来了解多态的机制
现在是什么问题
#include<stdio.h>
#pragma warning(disable:4996)
#include<iostream>
using namespace std;
class BaseClass{
public:
void fn1(){
cout << "BaseClass::fn1()调用" << endl;
}
void fn2(){
cout << "BaseClass::fn2()调用" << endl;
}
private:
int i;
};
class DerivedClass :public BaseClass{
public:
void fn1(){
cout << "DerivedClass::fn1()调用" << endl;
}
private:
int j;
};
int main(){
DerivedClass *b = new DerivedClass;
b->BaseClass::fn1();
b->fn1();
b->fn2();
cout << endl;
BaseClass *a = new DerivedClass;
a->BaseClass::fn1();
a->fn1();
a->fn2();
}
C和C++完整教程:https://blog.csdn.net/it_xiangqiang/category_10581430.html