b1=d这句话所包含的意义,你可能还没学到。
也就是说b1=d发生了什么?
c语言里面int a,b;
a=b,不过是先把b的值放到寄存器中,再把寄存器里面的值复制到a,那么对于类就不太一样了,因为int只有4个字节,可以放到寄存器里面,一个类一般放不下,
所以b1=d,其实是b1.operator=(d); operator= 是重载运算符,当你定义一个类时,编译器会默认提供3个函数,默认构造函数,拷贝构造函数,和赋值函数就是operator=它的原型是
Base& operator=(const Base& rh),结合b1=d,就是调用operator=(d),也就是把d转为了const Base&
你搞反了,base是基类,另一个是派生类
你提的这个问题很好,一看就是善于思考的人。。。
基类和派生类的区别就是,派生类是继承于基类,基类是父类,派生类是子类。。。
为什么是b1=d1,而不能反着来,你可以想象下,我定义一个基类的对象,能直接通过基类对象调用子类的函数吗?答案肯定是不行的,如果变成了d1=b1,那不就这个意思,你拿着基类的对象,想去冒充子类。。。。
最后,建议你下面几个文章,