随笔分类 - C++
摘要:1. explicit关键字 explicit是C++引入的一个关键字, 作用是禁止隐式类型转换, 下面一步一步来看 #include <iostream> using namespace std; class A { public: A(int val) :_val(val) { cout <<
阅读全文
摘要:1. 回顾构造函数 构造函数是6个默认的成员函数之一, 完成对象初始化的工作 而在构造函数中, 有两种初始化对象的方式, 初始化列表和函数体内赋值 首先来回顾一下用函数体内赋值方法进行初始化 #include <iostream> using namespace std; class Date {
阅读全文
摘要:1. const 关键字 在C语言中, const关键字用来修饰变量, 表示变量的值不能被修改 在C++中, const可以修饰变量, 也可以用来修饰对象和类成员变量 下面先来看一下, const 修饰对象 使用const修饰的对象d1, 调用成员函数报错, 这是为什么? 那么只要把this指针类型
阅读全文
摘要:0. 前言 本章首先提出一个问题以及对应的解决方法, 但是这种解决方法会有缺陷 以此引出运算符重载来改进这个解决方法, 目的是为了更好的理解运算符重载概念以及运算符重载解决了什么问题 之后详细说明运算符重载, 然后再运算符重载的基础上介绍赋值运算符重载 1. 概念引入 如何比较两个日期类对象的大小?
阅读全文
摘要:1. 拷贝构造函数 概念与定义 拷贝构造函数也是一个默认的成员函数, 其完成拷贝对象的工作 定义拷贝构造: 函数名与类名相同, 无返回值 拷贝构造函数的参数只能有一个, 且必须是类型对象的引用, 如下例 这里一定要注意, 形参必须是类型对象的引用或指针,否则会引发无穷递归调用,如下图 特性解析 1.
阅读全文
摘要:1. 概念引入 在说明构造函数和析构函数的概念之前, 首先看一个例子 下面这段代码是栈经典的应用场景括号匹配 如图, 栈首先必须初始化,然后在每一个return false之前都需要销毁栈, 否则就会有内存泄漏 这样很繁琐, 而且有些时候初始化和销毁很容易忘记写, 所以在C++中添加了默认的成员函数
阅读全文
摘要:1. this指针的概念与特性 this指针概念 首先来看一个例子 #include <iostream> using namespace std; class Date { public: void Init(int year, int month, int day) { _year = year
阅读全文
摘要:1. 对象存储规则 类实例化出的对象, 有成员变量和成员函数, 它们是存储在对象的? 实际上, 只有非静态的成员变量存储在对象中, 而成员函数是存储在公用代码段中, 如下图 现在知道了成员变量存储在对象中, 成员函数在公用代码段, 那么成员变量在内存中是如何存储的 对象中的成员变量在存储时需要遵守内
阅读全文
摘要:1. 初步认识面向对象与面向过程 C语言是面向过程的语言, 关注的是解决问题的过程 比如, 首先对问题进行拆解,然后用函数的方式对每个部分逐个实现,最后通过函数之间的相互调用将问题解决 C++是面向对象的, 关注的是对象, 如何从一个问题中抽离出不同的对象,然后靠对象之间的交互解决问题 最后需要注意
阅读全文
摘要:前言 本篇首先回顾指针的概念, 用C指针的缺陷引出C++中的引用, 然后对引用进行说明 比如, 什么是引用? 引用解决指针什么问题? 引用的特性和使用等等 1. 指针 什么是指针 指针是内存单元的地址, 口语中的指针实际上是指针变量, 存储地址的变量 #include <stdio.h> int m
阅读全文
摘要:1. 缺省参数 什么是缺省参数 缺省参数是声明或者定义函数时为函数的参数指定一个默认值,如果函数调用时没有传入实参, 那么这个默认值会被当做实参,如下例子 函数调用时, 传入参数1, a = 1,不传入参数, 默认a = 0, 这里的a就是一个缺省参数 缺省参数的分类 缺省参数分全缺省和半缺省参数
阅读全文
摘要:0. 前言 C++是在C语言基础之上的一门语言, 所以学习C++的第一步是思考C++是如何优化C语言设计中的一些不足, 如作用域, IO , 函数, 指针, 宏等 这些内容同时也是为之后学习C++类和对象打基础, 下面说一下C++是如何优化C语言中的作用域 1. 命名空间 在说明命名空间的概念和如何
阅读全文