C++常见的概念
1)多态:允许将子类类型的指针赋值给父类类型的指针。赋值以后,父类对象可以根据当前赋值给它的子类对象的特性以不同的方式运作。
2)深拷贝:重新分配内存;浅拷贝:共用同一内存。
3)友元:非成员函数不能通过类的对象访问私有成员,但是友元(函数)可以;友元函数却不是成员函数,但必须在类中声明;类与类之间的友元关系不能被继承。
非成员函数不能是虚的,所以友元函数也不能是虚的。
4)复制构造函数与赋值:有新对象被定义则调用复制构造,没有则调用赋值。函数之间的值传递时,会隐式定义新对象,所以会调用复制构造函数
5)构造函数与析构函数:派生类不能继承父类的构造和析构函数,要定义自己的构造和析构函数。子类定义构造函数时,可以选择显式调用父类的构造函数(如果父类只有有参构造函数,则子类必须显式调用)
执行顺序:父类构造函数、子类构造函数、子类析构函数、父类析构函数
将构造/析构函数设置为protected则无法直接创建该类。
构造函数的调用顺序为:调用基类的构造函数->调用成员对象的构造函数->调用自身的构造函数。
构造函数的调用次序完全不受构造函数初始化列表的表达式中的次序影响,与基类的声明次序和成员对象在函数中的声明次序有关
6)变量的初始化顺序:1)基类的静态变量或全局变量;2)派生类的的静态变量或全局变量;3)基类的成员变量;4)派生类的成员变量
7)空类默认产生的成员函数:1)默认构造函数;2)复制构造函数;3)析构函数;4)赋值运算符重载函数;5)取址运算符重载函数、const取址运算符重载函数
8)继承:派生类的性质=min(基类性质,继承性质);私有成员不能访问。
9)默认参数:1)既有声明又有定义时,只允许在声明中使用默认参数;2)默认参数应该从右至左定义(不允许跳);3)默认参数调用的调用顺序是从左至右;4)默认参数可以全局变量(常量)、函数
10)初始化列表A::A:a(0),b(1){}
1)赋值是删除原值,赋予新值;初始化列表开辟空间和初始化是同时完成,直接给予一个值。
2)只能用初始化列表不能用赋值的情况:1、类中含有const、reference成员常量;2、基类的构造函数;3、成员类型是没有默认构造函数的类
C++常见的概念的更多相关文章
- C#常见的概念阐述
在上篇文章中,你跟着我写了一个HelloWorld,本篇中,我们来谈谈一些C#程序中的小概念 1.C# 程序结构 一个 C# 程序主要包括以下部分: 命名空间声明(Namespace declarat ...
- Java面试常见各种概念区别比较
Hashtable 和 HashMap之间的区别 Hashtable是继承了Dictionary,是线程安全的.HashMap实现了Map接口,不是线程安全的.HashMap是Hashtable的轻量 ...
- css常见的概念
padding-top:10px;是指容器内的内容距离容器的顶部有10个像素,是包含在容器内的: margin-top:10px;是指容器本身的顶部距离其他容器有10个像素,不包含在容器内: top: ...
- web开发中的一些不常见的概念
1.惊群 [活跃]星际争霸小王子 就是当你在车站时,一堆拉客的人一拥而上,想你坐他的车,于是就惊群了.但你只能坐一个车,所以没拉到你的就悻悻而归,于是return false[活跃]星际争霸小王 2 ...
- javascript面向对象系列第四篇——OOP中的常见概念
前面的话 面向对象描述了一种代码的组织结构形式——一种在软件中对真实世界中问题领域的建模方法.本文将从理论层面,介绍javascript面向对象程序程序(OOP)中一些常见的概念 对象 所谓对象,本质 ...
- SQL Server“复杂”概念之理解
用惯了Oracle的人,接触SQL Server中的概念时,会觉得比较难理解,甚至感觉有点“绕”,这是因为Oracle中将某些其他数据库中存在的概念给简化了,这里就拿两个最常见的概念来举例说明:1.s ...
- 3-C#面向对象概念
本篇博客对应视频讲解 回顾 前两篇博文带大家快速的感知一下使用C#编写程序是怎样的过程,能实现什么样的功能.同时也提到了面向对象的概念.本篇文章就是更加详细的去将面向对象编程中常见的概念进行示例说明, ...
- JavaScript面向对象当中的几个概念
JS面向对象过程中的几个概念 前言 面向对象描述的是一种代码组织解构的形式,一种在软件中对真实世界中问题领域的建模方法. 下面将从理论层面来介绍下面向对象编程中一些常见的概念. 对象 所谓对象,本质上 ...
- C++ Templates (Part I 基本概念 The Basics)
C++ 模板 (C++ Templates) 目录 C++ 模板 (C++ Templates) 第一部分 基本概念 (The Basics) 第一部分章节目录 参考资料 第一部分 基本概念 (The ...
随机推荐
- [C++ Primer Plus] 零散知识点(一)、输入函数(cin,cin.get,cin.getline等)+string头文件辨析
本文几乎照搬http://www.cnblogs.com/luolizhi/p/5746775.html博客,只修改了一点点.不知道怎么转发过来,尴尬... 学C++的时候,这几个输入函数弄的有点迷糊 ...
- UVA1328 Period
思路 KMP算法的next数组是该字符串的最长的相同的前缀和后缀的长度 所以i-next[i]是最小的循环节长度 然后如果next[i]不为0,则证明一定有循环(不一定完整) 然后如果整除,就是完整的 ...
- msvc命令行cl编译c程序问题及解决
1.cmd命令行cl提示没有这玩意儿 装上Visual Studio之类 2.cl main.c提示缺dll everything搜dll所在路径,在环境配置PATH增加对应bin.IDE 3.cl ...
- vue--音乐播放器
github: https://github.com/vinieo/vue-music 效果: 基础组件: 1.confirm:确认对话框组件 2.listview:通讯录列表组件 3.loading ...
- Hibernate注意项
Hibernate实体规则 1.持久化类提供无参数构造 2.成员变量私有,提供getset访问,提供实行 3.持久化类属性,尽量使用包装类型 4.持久化类需要提供oid与数据库中的主键列对应 5.不要 ...
- bootStrap table 和 JS 开发过程中遇到问题汇总
1..bootStrap-table表头固定 在table定义的时候给高度属性就可以自动生成滚动条,并且固定表头[height: 220,] 2.为动态生成的DOM元素绑定事件 on("cl ...
- 利用iframe实现无刷新提交
服务器里边:
- Introducing the Microservices Reference Architecture from NGINX
Introducing the Microservices Reference Architecture from NGINX https://www.nginx.com/blog/introduci ...
- selenium java 文件上传、下载
1.webdriver对页面文件的下载 我们一般操作浏览器下载时会让我们选择下载的目录然后经过一系列操作后才进行文件下载操作,但是用webdriver不能按这样的方式操作.经过查询资料找到了如下的实现 ...
- for each...in
for each...in 使用一个变量迭代一个对象的所有属性值,对于每一个属性值,有一个指定的语句块被执行. for each...in 是 ECMA-357 (E4X) 标准的一部分, 大部分非M ...