【c++语言特性深究】教程文章相关的互联网学习教程文章

C++三大特性

相信不少入门C++的萌新都会被灌输这么一个理念,那就是C++是面向对象编程,并且有三大特性,继承封装多态。首先我们了解一下这三个特性的大概含义和优缺点,再看看为什么这三个特性是C++独有的而C没有。 (1)继承: 一个对象直接使用另一个对象的属性和方法。 优点:1.减少重复的代码。 ?   ??2.继承是多态的前提。 ?   ??3.继承增加了类的耦合性。 缺点:1.继承在编译时刻就定义了,无法在运行时刻改变父类继承的实现; ? ? ...

C++11特性-智能指针详解【代码】

动态内存的使用很容易出问题,因为确保在正确的时间释放内存是极为困难的。有时我们会忘记释放内存产生内存泄漏,有时提前释放了内存,再使用指针去引用内存就会报错。 为了更容易(同时也更安全)地使用动态内存,新的标准库提供了两种智能指针类型来管理动态对象。智能指针的行为类似常规指针,区别在于它负责自动释放所指向的对象。这两种智能指针的区别在于管理底层指针的方式:shared_ptr 允许多个shared_ptr类型指针指向同一...

C++运行阶段类型识别(Runtime Type Identification)(C++新特性)【代码】

编译时开销 编译器在编译代码时,主要进行:词法分析(识别单词,确认词类:标识符、关键字、字符串、数字等等)、语法分析(识别短语和句型的语法属性,生成语法树)、语义分析(确认单词,句型的语义特征,如加减乘除等)、代码优化和代码生成等。模板、类层次结构、强制类型检查等新特性,以及大量使用了这些新特性的STL标准库都增加了编译器负担。 运行时开销 C++中有可能引入额外运行时开销的新特性包括: 虚基类虚函数RTTI(...

C++11特性:bind和function函数使用【代码】

目录 1. std::bind 2. std::function1. std::bind std::bind 的函数原型: simple(1): template <class Fn, class... Args>/* unspecified */ bind (Fn&& fn, Args&&... args);with return type (2): template <class Ret, class Fn, class... Args>/* unspecified */ bind (Fn&& fn, Args&&... args); 作用:返回基于fn的函数对象,但其参数绑定到args。 每个参数都可以绑定到一个值或占位符: 如果绑定到一个值,则调用返回的...

C++11新特性——for遍历【代码】【图】

熟悉C++98/03的对于for循环就再了解不过了,如果我们要遍历一个数组,那么在C++98/03中的实现方式:int arr[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; for (int i = 0; i < 10; i++) cout << arr[i]; 而遍历容器类的For如下:std::vector<int> vec {1,2,3,4,5,6,7,8,9,10}; for (std::vector<int>::iterator itr = vec.begin(); itr != vec.end(); itr++) cout << *itr; 不管上面哪一种方法,都必须明确的确定for...

vscode 支持c++17特性【图】

settings -> Extensions -> run code configure -> Executor Map -> Edit in settings.json在 gcc 中添加 -std=c++17,如下图所示

C++11新特性【代码】【图】

这篇文章记录下部分C++11的新特性,有很多常用的也有很多一下子接受不了的。 1.long long类型。 2.列表初始化。 3.nullptr常量。 4.constexpr常量。 5.类型别名声明。 6.auto类型指示符。 7.decltype类型指示符。 8.标准库函数begin和end。 9.initializer_list形参。 10.lambda表达式。 1.long long 类型。 2.列表初始化。int a=0; int a={0}; int a{0}; int a(0);上面是四种初始化方式,其中花括号初始化已经在c++11中全面...

C++2.0特性之一:变量模板(variable template)【代码】【图】

变量模板(variable template)是C++2.0的一个新特性,虽然他功能强大,但是在平时的代码中用得比较少。最近在侯捷老师的视频里学到这个知识点,这里简单说一下。 和C++模板一样,变量模板也有函数模板和类模板,这种情况有非常多相似,就是作用对象不同。 那么变量模板这个“变量”体现在哪里?①参数个数可变 ②参数类型可变 也就是我,我们可以给一个函数传进去一个乱七八糟的的一包东西,这包东西的元素个数和元素类型都是不确...

c++ 11新特性小结

【shared_ptr】 c++ 11模板库的<memory>头文件中定义的智能指针,即 shared_ptr 模板,用于自动释放 new 动态分布的内存空间。 只要将new运算符返回的指针 ptr 交给一个shared_ptr对象托管,就不必写 delete ptr 语句,托管 ptr 指针的 shared_ptr 对象在消亡时会自动执行 delete ptr。 shared_ptr 对象能像指针 ptr 一样使用,即 *shared_ptr 就是 *ptr。 A* a = new A(); std::shared_ptr<A> sp(a); // *sp 等价于 *a // delet...

C++:特殊工具与技术之不可移植的特性(位域)【代码】

为了位置底层编程,C++定义了一些固有的不可移植的特性。所谓不可移植的特性是指因机器而异的特性 当我们将含有不可移植的程序从一台机器转移到另一台机器上时,通常需要重新编写该程序。算术类型的大小在不同机器上不一样,这是一个典型实例 本文介绍的特性有: 位域:从C语言继承而来的特性 volatile:从C语言继承而来的特性 extern:C++新增的链接指示 一、位域 类可以将其(非静态)数据成员定义为位域,在一个位域中含有一...

C++11新特性【代码】【图】

补充一下C++11新特性,被问到了 1,nullptr nullptr 出现的目的是为了替代 NULL(某些编译器把NULL定义为0)。 专门用来区分空指针、0 nullptr 的类型为 nullptr_t 能够隐式的转换为任何指针或成员指针的类型,也能和他们进行相等或者不等的比较。 当需要使用 NULL 时候,养成直接使用 nullptr的习惯。 2,auto关键字 类型推导,注意个别的用法(不能推导数组) 常用于迭代器的类型推导for(vector<int>::const_iterator itr = vec...

Cocos2dx游戏教程(六):“见缝插针”,菜单Menu与C++11新特性【代码】【图】

上一节我们已经实现了第二个场景界面,最后按下按钮发现没有反应是不是,这一节将会给大家介绍下Cocos2dx另一个重要的对象,菜单Menu。 一、Menu介绍 提到Menu,不得不提到MenuItem,MenuItem继承自Node,所以它的子类菜单项都可以使用Node的相关操作。 MenuItem是所有菜单项的父类,建议不要直接使用该类,因为它并不包含具体显示的功能。 作为其它菜单项的父类,主要提供了一下三个功能: (1)提供了基本按钮的状态:正常、选中...

回顾C++11标准特性(1)【代码】

今天突发奇想不想使用cout进行输出信息了,想把cout换成自己任意指定的非关键词变量名字进行输出#include <iostream> using namespace std;int main(){decltype(cout) &shit = cout;shit<<"i am piece of shit"<<endl;return 0; } 需要注意的是,我是用g++进行编译的时候需要指明使用的标准g++ shit.cpp -o shit -std=c++11这样就实现了使用shit替换cout的目的. 获取类型在c++11标准中有两个操作符,一个是auto一...

C++11特性中基于范围的for循环【图】

本文摘录柳神笔记:   除了像C语?的for语句 for (i = 0; i < arr.size(); i++) 这样,C++11标准还为C++添加了?种新的 for 循环? 式,叫做基于范围(range-based)的for循环,这在遍历数组中的每?个元素时使?会?较简便~?如 想要输出数组 arr 中的每?个值,可以使?如下的?式输出:i 变量从数组的第?个元素开始,不断执?循环, i 依次表示数组中的每?个元素~注意,使? int i 的?式定义时,该语句只能?来输出数组中元素的值,?不能...

C++ 三大特性之多态【代码】【图】

C++的三大特性:封装、继承、多态。封装可以使得代码模块化,继承可以扩展已存在的代码,而多态的目的则是为了接口重用。下面主要以介绍多态为主。 什么是多态 C++的多态性用一句话概括就是:在基类的函数前加上virtual关键字,在派生类中重写该函数,运行时将会根据对象的实际类型来调用相应的函数。 多态性指相同对象收到不同消息或不同对象收到相同消息时产生不同的实现动作。C++支持两种多态性:编译时多态性,运行时多态性。 ...