文章教程

5分钟搞懂C++左值引用和右值引用

在学习C++的过程中会遇到很多难以理解的概念,今天我们就聊一聊C++中的左值引用和右值引用。在C++11以前还没有左值引用和右值引用的概念,只有引用的概念。右值引用是由C++11引入的,为了方便和右值引用区分,我们把C++11以前的常规引用称为左值引用。什么是左值引用和右值引用首先我们区分什么是左值和右值,有一个很好区分左值和右值的方式,就是是否可以对表达式 …

C++性能优化利器:std::move()

C++11的标准库 <utility> 提供了一个非常有用的函数 std::move(),std::move() 函数将一个左值强制转化为右值引用,以用于移动语义。关于左值和右值的理解可以参考:C++中左值和右值的理解 移动语义,允许直接转移对象的资产和属性的所有权,而在参数为右值时无需复制它们。换一种说法就是,std::move() 将对象的状 …

C++11 final关键字的使用

C++中增加了final关键字来限制某个类不能被继承,或者或个虚函数不能被重写,和java的final关键字的功能是类似的。如果使用final修饰函数,只能修饰虚函数,并且要把final关键字放到类或者函数的后面。修饰函数如果使用final修饰函数,只能修饰虚函数,这样就能阻止子类重写父类的这个函数了。示例:#include <iostream> …

C++各类设计模式及实现详解

软件领域中的设计模式为开发人员提供了一种使用专家设计经验的有效途径。设计模式中运用了面向对象编程语言的重要特性:封装、继承、多态,真正领悟设计模式的精髓是可能一个漫长的过程,需要大量实践经验的积累。最近看设计模式的书,对于每个模式,用C++写了个小例子,加深一下理解。推荐视频:工作5年以上程序员是如何理解和使用设计模式为什么不推荐做mcu与qt开发,c++ …

C++高级编程之——构造函数析构函数、继承、派生类、基类

类的构造函数、析构函数与赋值函数构造函数、析构函数与赋值函数是每个类最基本的函数。它们太普通以致让人容易麻痹大意,其实这些貌似简单的函数就象没有顶盖的下水道那样危险。每个类只有一个析构函数和一个赋值函数,但可以有多个构造函数(包含一个拷贝构造函数,其它的称为普通构造函数)。对于任意一个类 A,如果不想编写上述函数,C++编译器将自动为 A 产生四个缺省的函数 …

C++有哪些输入输出特性?linux c++第3讲

C++的输入输出特性C++是C的扩展,除了可以利用C语言提供的printf和scanf函数进行输出和输入外,还增加了标准输入输出流cout和cin。cout是代表C++的输出流,cin代表C++的输入流。它们是在头文件 iostream 中定义。键盘和显示器是计算机的标准输入输出设备,所以,在键盘和显示器上的输入输出称为标准输入输出。C++预定义的标准流如下 …

C++知识分享:C++类特殊成员函数

C++类中有几个特殊的非静态成员函数,当用户未定义这些函数时,编译器将给出默认实现。C++11前有四个特殊函数,C++11引入移动语义特性,增加了两个参数为右值的特殊函数。这六个函数分别是:默认构造函数默认构造函数指不需要参数就能初始化的构造函数。包含无参和所有参数有默认值两种类型的构造函数。复制构造函数复制构造函数指使用该类的对象作为参数的构造函数。可以有 …

C++|从函数内部的执行顺序理解递归的整体顺序

函数执行过程:1 在主程序中计算每个实际参数值;2 用实际参数值初始化形式参数;3 依次执行函数体的每个语句,直到遇见return语句或函数体结束;4 计算return后面的表达式的值,用表达式的值构造一个临时变量;5 回到调用函数,用临时变量置换函数调用,继续主程序的执行;递归函数构成自我调用,直到递归出口条件:#include<iostream&g …

初识C++输入输出

C++没有直接定义进行输入输出的任何语句,这种功能是由标准库提供的。本文的例子使用了处理格式化输入输出的iostream库,iostream的基础是istream 和ostream,分别是输入流和输出流。流是从某种IO设备上读取或写入的字符序列。标准库定义了4个IO对象,其中istream类型的对象有一个,命名为cin,这个对象被称为标准输入。ostream …

C++模板初探

模板概念模板是泛型编程的基础,泛型编程即以一种独立于任何特定类型的方式编写代码。模板是创建泛型类或函数的蓝图或公式。库容器,比如迭代器和算法,都是泛型编程的例子,它们都使用了模板的概念。每个容器都有一个单一的定义,比如向量,我们可以定义许多不同类型的向量,比如 vector <int> 或 vector <string>。模板是一种对 …