C++面向对象技术

第六章 C++面向对象

  1. 面向对象技术的基本概念:面向对象是指按人们认识客观世界的系统思维方式,采用基于对象(实体)的概念建立模型,模拟客观世界分析,设计,实现软件的办法,包括类,对象,消息以及类的特性(抽象,继承,封装,重载,多态)。
  2. class和struct的区别:
    • C语言的struct与class的区别:struct只是作为一种复杂数据类型定义,不能用于面向对象的编程。
    • C++中struct 和class的区别:对于成员访问权限以及继承方式,class中默认的是private的,而struct中则是public的。class还可以表示模版类型,struct则不行。
  3. 初始化列表和赋值的区别:
    当类中含有const,或引用成员变量和基类的构造函数时都需要初始化列表。
  4. C++类成员变量的初始化:

    1. 在类的定义中进行的,只有const 且 static 且 integral 的变量。
    2. 在类的构造函数初始化列表中, 包括const对象和Reference对象。
    3. 在类的定义之外初始化的,包括static变量。因为它是属于类的唯一变量。
    4. 普通的变量可以在构造函数的内部,通过赋值方式进行。当然这样效率不高。
  5. explicit 关键字:, C++中的explicit关键字只能用于修饰只有一个参数的类构造函数, 它的作用是表明该构造函数是显示的, 而非隐式的, 跟它相对应的另一个关键字是implicit, 意思是隐藏的,类构造函数默认情况下即声明为implicit(隐式).
  6. 函数重载:用来描述同名函数具有相同或者相似的功能,但数据类型或者是参数不同的函数管理操作。

  7. 重载与覆盖的区别:

重载(overlode):是让同名的方法根据不同的数据类型可以处理和返回不同类型的数据.

覆盖(override):子类改写父类。

成员函数被重载的特征有:

1) 相同的范围(在同一个类中);

2) 函数名字相同;

3) 参数不同;

4) virtual关键字可有可无。

覆盖的特征有:

1) 不同的范围(分别位于派生类与基类);

2) 函数名字相同;

3) 参数相同;

4) 基类函数必须有virtual关键字。

重载是一种语法规则,由编译器在编译阶段完成,不属于面向对象的编程;而覆盖是由运行阶段决定,是面向对象的重要特征。

参考:《C和C++程序员面试秘籍》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值