首页
首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
C++
高二的笔记
创建于2023-04-09
订阅专栏
关于C++那些事
暂无订阅
共12篇文章
创建于2023-04-09
订阅专栏
默认顺序
默认顺序
最早发布
最新发布
C++中的异常
C++中的异常主要由三个关键字构成:try,catch,throw。 其中throw抛出异常,try包围可能发生异常的语句,catch用来做异常处理。 看一个例子: throw可以抛出任意异常,只要c
对象的优化
程序输出: 程序输出: 三条对象优化原则 程序输出: 如果是这样调用呢: 程序输出: 可以看到函数返回值的对象也没有生成而是直接初始化了t2,因此第三条:
快速排序算法
关于快速排序有很多中写法,对于初学者可能会很疑惑究竟哪种是“标准写法”,事实上只要符合快速排序算法的要求都可以叫做快速排序。而快速排序实际上就是选取一个基准值,将待排序数组按照基准值分为两部分,左边的
条款9和条款22
条款9:绝不在构造和析构过程中调用virtual函数 不在构造函数和析构函数中调用虚函数,这样的调用不会带来预想的结果。 来看一下程序输出: Derived类继承自Base,因此Base类先于Deri
条款5和条款16
条款5:了解c++默默编写并调用哪些函数 当我们写一个空类时,编译器会自动帮我们生成默认构造函数、析构函数、拷贝构造、以及赋值运算符。 因此对于这个类: 编译器会生成: 对于下面这个例子: 我们并没有
条款23和条款24
条款23:宁以non-member、non-friend替换member函数 为什么要用非成员函数、非友元函数替换成员函数呢?其实这是为了保证数据的封装性。而数据的封装性强弱是怎么体现的呢?一种粗糙的
条款20和条款21
条款20:宁以pass-by-reference-to-const替换pass-by-value 在c语言中我们知道,函数传参时,直接传参会发生拷贝行为。因此,为了减少拷贝,我们通常会传引用。同样,这
条款3:尽可能使用const
条款3:尽可能使用const 简单来说,当我们希望某个值(这个值,可以是变量,成员函数等等)不能被改变时,就应该为该值声明为const类型,告诉编译器同时也告诉我们自己,这个值后续不能被改变,防止后续
条款18:让接口容易被正确使用,不易被误用
比如这样一个表示时间的类: 如果我们不对接口做一些“强制性“的约束,该接口就可能被误用: 虽然上述调用可以通过编译,但却可能与用户意图违背。为此我们可以采用类型系统: 这时,我们对用户使用该类的方式做
条款4:确定对象被使用前已先被初始化
确定对象被使用前已先被初始化,言简意赅。 因为如果直接使用未初始化的对象,初值未定,行为是不明确的,可能会让程序终止运行,或者发生不可预测的行为等。在c++中,可以通过该类的构造函数初始化该类所包含的
条款6和条款7
条款6:若不想使用编译器自动生成的函数,就该明确拒绝 在c++11中新增了一个语法 = default 和= delete 来看一个例子: 例子中 = default 表示使用编译器自动合成版本。 =
条款10和条款13
条款10:令operator= 返回一个reference to *this 首先来看一个例子: 运行这段程序会发现程序并没有报错,并且输出了正确的结果。当然例子比较简单,只进行了一次赋值操作,但如果