C++重写和隐藏的区别,重载,以及子类赋值给父类(c++不允许父类赋值给子类)

重载:

必须在同一个类别中,不能是父子之间,父子之间只能是隐藏或者重写

 

重写:

方法名参数列表都一样(实际要求返回值也一样),必须是virtual函数,则子类覆写父类导致父类函数无法通过子类调用

隐藏:只要子类函数名同父类就会隐藏父类方法,无论是否virtual,当然特殊情况则是在virtual时且参数列表也一样时,就变成了覆写,但仍然和覆写一样无法调用父类方法相应的方法。

 

子类赋值给父类:

#include <iostream>

using namespace std;

class A {
public :
    int a=2;
    int b=2;
};

class B : public A {
public :
    int a=1;
    int b=1;

    void func() {
        A::a = 100;//对继承部分的操控,通过域名的方式,也只能是在类中可以进行 
        A::b = 200;
    }
};

int main(void) {
    cout << sizeof(A) << endl;//8
    cout << sizeof(B) << endl;//16
// 这两行代码说明了,,A 中的两个数据成员和B中两个数据成员是没有关系的 
    A a;
    B b;
    a = b;
    cout << a.a << endl << a.b << endl;//2 2

    b.func();
    a = b;
    cout << a.a << endl << a.b << endl;//100 200
/*
可以看出,子类对父类的赋值实际就是子类对象中继承自父类的部分赋值给父类对象!!

*/
// b.(A::a)a= 1000; //  通过域名的方式企图对子类中继承之父类的成员操作,在子类的外面是不行的!!必须在类中 
    return 0;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值