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来分配,并通过一个指向它的基类的指针来控制,那么它经常通过一个指向它的基类的指针来删除它。
动态内存分配在自由存储区(堆)中进行。
浅拷贝:默认复制构造函数,按成员的值复制。仅拷贝指针,因此两个指针可能指向同一个对象(指针和引用都存在此问题),存在同一资源多次释放的问题。
深拷贝:重新定义复制构造函数,拷贝指针及其指向的数据,给每个对象独立分配一个自由存储区。
引用:可以看作一种自动解引用的常量指针,或是对象别名。
原文地址:https://www.cnblogs.com/Jason404/p/15038274.html
- 【解疑答惑】css中经常被忽略的代码陷阱
- 时间序列预测全攻略(附带Python代码)
- “鼠标移入显示悬浮框”特效,也可以“高大上”
- 用交叉验证改善模型的预测表现(适用于Python和R)
- 前端特效制作 | CSS3圆形风格面包屑导航
- CSS3 倒影
- 写一只具有识别能力的图片爬虫
- 【今日问题】变量未初始化引起的崩溃
- 前端特效开发 | 点击查看大图相册效果
- 开发 | 星际争霸2人工智能研究环境 SC2LE 初体验
- 开发 | 我做了12万条的影评分析,告诉你《战狼Ⅱ》都在说些啥
- JavaScript | 函数定义的两种方法;预编译与执行
- jQuery特效 | 导航底部横线跟随鼠标缓动
- JavaScript | 选中并获取多行文本框内容的效果
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Azkaban-2.5.0-部署与常见案例
- 无字母数字webshell之提高篇
- Sqoop-1.4.7-部署与常见案例
- Hbase-2.0.0_01_安装部署
- 前端黑魔法之远程控制地址栏
- 攻击LNMP架构Web应用的几个小Tricks
- Hbase-2.0.0_02_常用操作
- phpjiami 数种解密方法
- Hbase-2.0.0_03_Hbase数据模型
- ELK-elasticsearch-6.3.2部署
- Real World CTF 2018 bookhub 总结
- python http.server open redirect vulnerability
- ELK-elasticsearch-6.3.2插件【head,bigdesk,cerebro[kopf]】安装
- ELK-kibana-6.3.2部署
- node.js + postgres 从注入到Getshell