基类和派生类之间的关系

来源:百度知道 编辑:UC知道 时间:2024/09/21 01:38:07
#include <iostream>
using namespace std;

class father
{
public:
virtual void out()
{
cout<<"It's father"<<endl;
}
};

class sun:public father
{
public:
virtual void out()
{
cout<<"It's sun"<<endl;
}
};

void tryFS(father f)
{
f.out();
}

int main()
{
father f;
sun s;

tryFS(f);
tryFS(s);
}

这里的tryFS(father f)函数复制了派生类的基类部分(书上是这么说的)
但是我传递的是sun而sun里的out函数重定义过 这说明不是在sun对象里复制 但那是在那里复制呢? 难道直接把派生类转为基类?
!! 还有 普通的成员函数和static函数有什么不同 static函数有什么优点?

基类和派生类就是父子关系。。儿子继承了父亲的所有特征,并且还有自己的特性。派生类继承基类有三种继承方式,每种方式的派生类对基类的访问权限都是不一样的。通常都是公有继承。很少使用私有继承。

为什么tryFS(S)没有输出It's sun?是因为它是按实参调用的,实际是强制转为了father,因此调用了father的out。要让它调用sun的out需要修改一下,void tryFS(father &f) 或者用指针。
这样才会根据实际情况调用。
static成员函数是全部对象共享,只能访问static成员变量。