【0】C++面向对象之《继承》

⑴继承的格式: 继承时子类的类名通过冒号语法连接public 父类名。

⑵子类的空间布:子类的空间由父类结构和子类特有结构组成线性组成。

⑶派生类(子类)的构造机制:调用子类的构造函数,但在执行该函数体之前先调用父类的构造并执行构造函数体,此时也可以通过冒号语法为父类构造函数的调用传递参数,否则只能调用父类的默认构造函数,由于此时调用的父类构造函数属于显式调用构造函数,所以调用父类的构造进而产生父类的无名对象,但在产生无名对象之后子类对象的指针this便指向了这个对象,需要注意的是,虽然this指向的是该无名对象,但this是子类的空间尺寸,而不是父类的空间尺寸。即this空间包括了父类空间。
执行完基类函数构造函数之后再构造对象成员,最后再执行子类函数体,通过子类函数体来完成剩余部分的构造。

⑷继承与组合:类以另一个类对象作为数据成员,成为组合。

⑸多态性:存在同一个函数的多种行为,即为多态,注意与重载函数不是多态,因为重载函数只是函数名字相同,不是同一个函数!多态的工作方式是迟后联编。即在函数运行是才能知道函数的行为,而不是在编译时确定函数的行为。
注意:子类的成员函数与基类的成员函数可以相同,既基类的的所有某一类的重载函数可以与子类的成员函数相同(不是重载,既函数可以完全相同),此时子类与基类的同名函数不会冲突也不能认为他们之间是重载关系,因为在子类中,会默认隐藏基类的同名函数,尽管在同名函数的调用中子类不符合条件而基类符合条件也不会调用基类的成员函数,而是计算机会报错:找不到匹配的成员函数,所以,在子类中,所有基类的同名函数只要子类有其同名函数,则基类的同名函数会默认被覆盖,此时调用基类的同名函数的唯一方式必须通过类名引用。
例:
基类student类成员函数:
void func(int i=0); //默认参数
子类graduate类成员函数:
void func();//无参数
定义子类对象
graduate fs
则子类对象fs调用func函数
fs.func(); //此时调用的是子类的func函数
不会调用基类的func函数
fs.func(5);//从预想上看由于子类没有带一 个参数的func函数,而基类中

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值