第五周学习:公有继承的复制兼容规则

  1. 派生类对象可以赋值给基类对象.
    base b; derived d; d=b;
    把派生类对象拥有的成员数据(基类也拥有的那些)拷贝过去。但基类不可以给派生类赋值,因为派生类有的基类可能木有。
  2. 派生类对象可以初始化基类引用
    base& b = d
  3. 派生类对象地址可以赋值给基类指针
    base* pb = &d .然后pb指的是派生类对象的基类公有部分,所以派生类有的基类没得那些你用不了。但是派生类指针不能指向基类对象地址,因为派生类有的你没得,你用个屁啊。
直接基类和间接基类

A派生B,B派生C,C派生D
A是B的直接基类,A是C的间接基类

声明派生类,只要列出直接基类即可。派生类会沿着类层次自动向上级继承所有间接基类。所以派生类包括自己定义的成员,直接基类和间接基类的所有成员。

#include<iostream>
using namespace std;
class son1
{
    
    
	public:
		son1(){
    
    cout<<"Son1 constructor called\n";}
		~son1(){
    
    cout<<"Son1 destructor called\n";}
 } ;
 
 class son2:public son1
 {
    
    
 	public:
 		son2():son1(){
    
    cout<<"Son2 constructor called\n";}
		~son2(){
    
    cout<<"Son2 destructor called\n";}
 };
 
 class son3:public son2
 {
    
    
 	public:
 		son3():son2(){
    
    cout<<"Son3 constructor called\n";}
		~son3(){
    
    cout<<"Son3 destructor called\n";}
 };
 
 int main()
 {
    
    
 	son3 s;
 }

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/ZmJ6666/article/details/108579898