C++ 考试知识要点

本文详细介绍了C++中的核心概念,包括面向对象编程的三大特性:继承、多态和封装。讲解了如何通过继承实现代码复用,利用多态进行动态绑定,以及封装在数据隐藏和接口设计中的应用。还讨论了构造函数、析构函数、拷贝构造函数的重要性,以及深拷贝与浅拷贝的区别。此外,提到了C++11中数据成员的初始化、引用作为返回值的特点,以及动态内存分配和聚合的概念。

C++ 考试知识要点

OOP = 继承(inheritance)+多态(polymorphism)+封装(encapsulation)

派生类中定义一个函数使之可以通过基类提供的接口进行统一调用,实现多态。当设计一个基类时,应当禁用它的拷贝构造函数和拷贝赋值操作。

public:所有类都可访问;protected:基类与派生类可以访问;private:只有基类自己可以访问。class默认访问访问限定符为私有,struct默认为公有。

有时,接口中的函数无法实现,需要的数据被隐藏在派生类中,必须保证派生类实现该函数,此时要设置纯虚函数,这是定义抽象接口的通常方式。如在基类中定义纯虚函数:virtual void func()=0,必须在派生类中实现它。一旦在基类中定义了纯虚函数,则该基类不能被实例化。纯接口通常没有数据成员和构造函数。

封装:把数据和函数合成一个整体,用类与对象(对象是类的实例)实现。把接口(类设计)和实现(编程)分离。

接口:通常数据成员被声明为私有,函数成员被声明为公有。公有函数集定义类的接口(interface)。

const函数声明:函数中访问类的数据成员只可以读取而不能修改。如float GetPrice()const。

构造函数:为数据成员分配存储空间并初始化每个对象的数据成员。不能声明为const。当新的对象被建立时,该对象所属的类的构造函数被自动调用,并且在该对象生命周期内只调用一次。只要构造函数时无参的或各参数均有默认值的,编译器都认为是默认的构造函数,并且只能有一个。

C++11支持在类的声明中初始化数据成员。数据成员声明的顺序决定了构造函数对其初始化的顺序。

引用作为函数的返回值,不生成值的副本。但返回值不能是函数中的局部变量,因为此时返回的局部变量地址已经失效。

聚合(aggregation):数据成员是类类型的对象。

派生类不继承构造函数和析构函数。

多态:编译时,重载实现(函数,运算符);运行时,通过类继承关系与虚函数实现。

虚函数:当一个类的成员函数被定义为虚函数,则由该类派生出来的所有派生类中,该函数始终保持虚函数的特性。如果在基类的函数中未加virtual,则被成为同名覆盖函数,不能实现运行时的多态性。静态成员函数不能作为虚函数。

如果有一个虚函数功能的类,则它需要一个虚的析构函数。如果一个派生类对象使用new来分配,并通过一个指向它的基类的指针来控制,那么它经常通过一个指向它的基类的指针来删除它。

动态内存分配在自由存储区(堆)中进行。

浅拷贝:默认复制构造函数,按成员的值复制。仅拷贝指针,因此两个指针可能指向同一个对象(指针和引用都存在此问题),存在同一资源多次释放的问题。

深拷贝:重新定义复制构造函数,拷贝指针及其指向的数据,给每个对象独立分配一个自由存储区。

引用:可以看作一种自动解引用的常量指针,或是对象别名。
在这里插入图片描述

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值