
C++进阶
文章平均质量分 82
C++进阶教程,需要拥有一定的C语言知识
Chiang木
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
C++进阶(十二) : C++中重载/重写(覆盖)/隐藏
一、重载重载指的是相同范围内声明了几个具有不同函数签名(参数的类型,个数,顺序不同)的同名函数,根据参数列表确定调用哪个函数。重载不关心函数返回类型。相同的范围(在同一个作用域中) 函数名字相同 参数不同列表 virtual 关键字可有可无 返回类型可以不同int test();int test(int a);int test(int a,double b);int test(double a,int a);int test(string s);二、重写(覆盖)重写是指.原创 2022-03-04 11:31:59 · 1100 阅读 · 1 评论 -
C++进阶(十一) : C++的冷知识小结
不能将一个数组直接赋值给另一个数组,字符串数组也不行,但可以将一个结构直接赋值给另一个结构 数组可以使用大括号形式进行初始化且可以省略等号,但这个只能在初始化时候使用,例如 int[12]{0};表示将第一个元素初始化为0,其余元素使用默认值,即也为0 cin.getline(str,size)与cin.get(str,size)都表示读取整行字符串知道读取到了换行符或size个字节,但cin.getline(str,size)在读取到换行符时候,将其取走并使用’\n’代替换行符,而cin.get...原创 2021-02-16 23:27:15 · 562 阅读 · 0 评论 -
C++进阶(十) :C++ 的关键字(保留字)【全】
本文将对一些常见c++关键字做一个总结,简单的一笔带过,复杂的会有详细的使用示例:1. asmasm (指令字符串):允许在 C++ 程序中嵌入汇编代码。2. autoauto(自动,automatic)是存储类型标识符,表明变量与实际赋值类型相同,另外auto修饰的变量必须初始化。int a = 10;auto b = a; // b的类型同a为intauto c = 10 / 3;// c的类型为floatauto d; //错误,auto变量必须初始化3....原创 2021-12-24 20:54:25 · 5416 阅读 · 0 评论 -
C++进阶(九) : 右值引用/移动语义/完美转发
一、右值引用1. 什么是左值、右值可以从2个角度判断:左值可以取地址、位于等号左边;而右值没法取地址,位于等号右边。举个例子:struct A { A(int a = 0) { a_ = a; } int a_;}; int a = 5;A b = A();a可以通过 & 取地址,位于等号左边,所以a是左值。 5位于等号右边,5没法通过 & 取地址,所以5是个右值。 同样的,b可以通过 & 取地址,位于等.原创 2021-12-15 13:37:11 · 1843 阅读 · 1 评论 -
C++进阶(八) :Lambda 表达式及底层实现原理【详解】
一、Lambda简介lambda表达式是C++11中引入的一项新技术,利用lambda表达式可以编写内嵌的匿名函数,用以替换独立函数或者函数对象,并且使代码更可读。Lambda 表达式完整的格式如下:[捕获列表] (形参列表) mutable 异常列表-> 返回类型{ 函数体}各项的含义:捕获列表:捕获外部变量,捕获的变量可以在函数体中使用(可省略,即不捕获外部变量) []:默认不捕获任何变量; [=]:默认以值捕获所有变量; [&]:默认以引用捕原创 2021-12-29 17:56:31 · 8698 阅读 · 2 评论 -
C++进阶(七) : 探讨C++11的三种智能指针【详解】
C++ 标准模板库 STL(Standard Template Library) 一共给我们提供了四种智能指针:auto_ptr、unique_ptr、shared_ptr 和 weak_ptr,其中 auto_ptr 是 C++98 提出的,C++11 已将其摒弃,并提出了 unique_ptr 替代 auto_ptr。一、unique_ptrstd::unique_ptr是一个独占型的智能指针,大多数场景下,std::unique_ptr和裸指针有着相同的尺寸,不允许赋值和拷贝操作,只能够移动。原创 2021-12-15 09:22:05 · 1424 阅读 · 0 评论 -
C++进阶(六) :C++的四种强制类型转换
C风格的强制转换(Type Cast)容易理解,不管什么类型的转换都可以使用使用下面的方式Type b = (Type)a;当然,C++也是支持这种形式的强制转换,但是C风格的强制转换可能带来一些隐患,让一些问题难以察觉。所以C++提供了一组可以用在不同场合的强制转换的函数。一、const_cast常量指针被转化成非常量的指针,并且仍然指向原来的对象; 常量引用被转换成非常量的引用,并且仍然指向原来的对象; 对于在定义为常量的参数,使用const_cast的行为是未定义的格式如下:原创 2021-12-24 20:32:05 · 4010 阅读 · 0 评论 -
C++进阶(五) : 多态【详解】
1、 什么是多态在面向对象中,多态是指通过基类的指针或者引用,在运行时根据基类的引用(指针)动态调用实际绑定对象函数的行为。与之相对应的是静态多态,静态多态是编译器在编译期间完成的,编译器会根据实参类型来选择调用合适的函数,如果有合适的函数就调用,没有的话就会发出警告或者报错,如函数重载,非虚函数重写等,多态是设计模式的基础,多态是框架的基础。2、多态的条件要有继承 要有虚函数重写(被 virtual 声明的函数叫虚函数) 要有父类指针(父类引用)指向子类对象3、多态的实现原理当.原创 2021-10-14 10:34:17 · 3582 阅读 · 0 评论 -
C++进阶(四) : 继承【详解】
一、多继承C++语言支持多继承,一个子类可以有多个父类,子类拥有所有父类的成员变量,子类继承所有父类的成员函数,子类对象可以当作任意父类对象使用。class Derived : public BaseA, public BaseB, public BaseC {};当两个父类存在相同名称的成员函数,在子类中,可以通过【类名::成员函数名称】的方式来确认调用的是哪个父类的函数。二、虚继承多继承虽然很不错原创 2021-02-11 00:37:09 · 1859 阅读 · 0 评论 -
C++进阶(三) : 封装【详解】
封装作为C++的三大特征之一(其余两个为继承和多态),其实现依赖于它的访问权限控制,关键字public,protected,private的其权限说明如下:public:类内及类外均可使用,是类对外连接的接口。 protected:类内可访问,友元函数可访问,子类也可访问,类外不可访问。 private:只有类内及友元函数可访问。在子类继承父类成员变量时,根据继承的方式不同,继承后的父类权限也会不同,但无论何种继承方式,子类访问不了父类的private成员:public:父类publi..原创 2022-02-10 17:26:49 · 2445 阅读 · 0 评论 -
C++进阶(二) : 构造函数与析构函数【详解】
C++作为一门面向对象的编程语言,在使用过程中,绝对会经常使用到类的构造函数及析构函数,本文主要总结了构造函数及析构函数的用法。一、构造函数在对某类进行实例化时,一定会调用该类的构造函数,构造函数主要完成的是类成员变量的初始化(静态变量除外,它是在全局数据区进行初始化的)或者内存分配工作。构造函数无返回值,可重载。构造函数调用顺序为:父类的构造函数->成员变量的构造函数->类自身的构造函数。示例代码如下:class Test{ public: Test()原创 2021-10-13 17:56:04 · 642 阅读 · 0 评论 -
C++进阶(一) : C++引用的简单理解
一、什么是引用引用,顾名思义是某一个变量或对象的别名,对引用的操作与对其所绑定的变量或对象的操作完全等价。注意,引用的类型必须和其所绑定的变量的类型相同语法:类型 &引用名=目标变量名;常引用语法:const 类型 &引用名=目标变量名;二、引用的注意事项1、声明引用的同时必须对其初始化,否则系统会报错2、引用相当于变量或对象的别名,因此不能再将已有的引用名作为其他变量或对象的名字或别名3、引用不是定义一个新的变量或对象,因此内存不会为引用开辟新的..原创 2021-09-30 14:55:54 · 3162 阅读 · 0 评论