父类 子类

如果一个派生类的派生符是public 则 ,将基类称为 父类,派生类称为子类,

C++ 允许,父类的指针直接指向子类的对象,或者父类引用子类:

#include<iostream>
#include<stdio.h>
#include<stdlib.h>
using namespace std;
class point{
     int x;
     int y;
     public:
     point(int x,int y):x(x),y(y){}
   void  show(){ cout<<"point"<<endl;}
     };
class circle:public point{
     int r;
     public:
     void show(){ cout<<"circle"<<endl;}
     circle(int x,int y,int r):point(x,y),r(r){}
     };
int main()
{
     circle c(1,2,3);
     point * p=&c;
     c.show();
     p->show();
     system("pause");
     return 0;
     }

父类 子类

如果一个函数被声明为基类的友元,则该友元内部的基类指针,也可以指向派生类的对象,即

对于基类的友元而言,在友元内部,基类被当做父类。

#include<iostream>
#include<stdio.h>
#include<stdlib.h>
using namespace std;
class point{
     int x;
     int y;
     public:
     point(int x,int y):x(x),y(y){}
     void  show(){ cout<<"point"<<endl;}
     friend void f1();
     void f2();
     };
class circle:point{
     int r;
     public:
     void show(){ cout<<"circle"<<endl;}
     circle(int x,int y,int r):point(x,y),r(r){}
     };
circle c(1,2,3);
void f1()
{
    point *p=&c;
    p->show();
}

/*void f2()
{
    point *p=&c;//f2不能访问
    p->show();
}  */
int main()
{

     f1();
     //f2(); f2不能访问
system("pause"); return 0; }

父类 子类

做个补充:父子类可以做下面这四件事(和上面的第一个冲突):

1:子类的对象可以给父类赋值。 赋值效果,基类数据成员和派生类中数据成员的值相同

2:子类的对象可以初始化父类的引用

3:父类的指针可以指向子类的地址

4:函数的参数是父类的引用时,当函数调用时,可以将子类的对象作为实参

#include<iostream>
#include<stdio.h>
#include<string>
#include<stdlib.h>
using namespace std;
class base{
    string name;
    public:
    void show();
    base(string name):name(name){}
};
void base::show()
{
    cout<<"base->"<<base::name<<endl;
}
class son:public base{
     public:
     void show();
     son(string name):base(name){}
};
void son::show()
{
    cout<<"son"<<endl;
}
void f(base & fa)
{
     fa.show();
}
int main()
{
    son a("guo");
    a.show();
    base b(a);
    b.show();
    //son c(b);


    base & c=a;
    c.show();


    base * d=&a;
    d->show();

    f(a);
    system("pause");
}

原文链接: https://www.cnblogs.com/cs1003/archive/2012/12/19/2825453.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/73023

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月9日 下午3:42
下一篇 2023年2月9日 下午3:42

相关推荐