
C++
文章平均质量分 69
傻白兔
这个作者很懒,什么都没留下…
展开
-
C++右值和移动
自C++11以来,C++进入Modern C++时代。移动语义是C++11里引入的一个重要概念;理解这个概念,是理解很多现代C++里的优化的基准值分左右我们常常会说,C++里有左值和右值。这话不完全对。标准里的定义实际更复杂,规定了下面这些值类别(value categories):我们先理解一下这些名词的字面含义:一个 lvalue 是通常可以放在等号左边的表达式,左值一个 rva...原创 2019-12-28 14:05:54 · 268 阅读 · 1 评论 -
C++面试题补漏
智能指针1,,你知道智能指针吗?智能指针的原理。2,常用的智能指针。3,智能指针的实现。智能指针是一个类, 智能指针实质是重载了->和*操作符的类,由类来实现对内存的管理,确保即使有异常产生,也可以通过智能指针类的析构函数完成内存的释放。使用shared_ptr避免这个类的构造函数中传入一个普通指针,析构函数中释放传入的指针。智能指针的类都是栈上的对象,所以当函数(或程序)结束时会...原创 2019-03-07 11:58:15 · 150 阅读 · 0 评论 -
C++使用Tips
C++指针使用TipsC++ delete指针后一定要设为NULL,防止出现野指针。一个new对应一个delete,如果指针只是指向某些东西的话。int a = 1;int*p = &a;delete p;这个程序是会出错的!必须有new才能delete,一个new对应一个delete。C++ new一个对象和生成一个对象实例的区别。对象生成示例可以显式声明,也可...原创 2019-03-03 22:36:46 · 221 阅读 · 0 评论 -
STL
Generic ProgrammingGP, 范型变成,就是使用template模板为主要工具来编写程序,与OOP的根本差异。STL是范型变成最成功的案例。使用一个东西,却不懂得它的根本原因,不高明。C++基本语法如何正确使用模板 (templates)使用C++标准库认识C++标准库良好使用C++标准库扩充C++标准库C++ Standard LibraryC++标准库S...原创 2019-03-05 23:30:44 · 111 阅读 · 0 评论 -
C++虚函数实现机制
C++虚函数实现机制C++程序的内存格局通常分为四个区:全局数据区,代码区,栈区,和堆区(即自由存储区)。全局数据区存放全局变量,静态数据和常量;所有类成员函数和非成员函数代码存放在代码区;为运行函数而分配的局部变量,函数参数,返回数据,返回地址等存放在栈区,余下的空间都被成为堆区。类成员函数是放在代码区,而类的静态成员变量在类定义时就已经在全局数据区分配了内存,因而它是属于类的。对于非静态...原创 2019-03-02 19:58:42 · 1493 阅读 · 0 评论 -
STL使用复习
标准模板库(STL)使用入门Vector原创 2019-03-02 18:45:06 · 193 阅读 · 0 评论 -
C++进阶
C++进阶指针与引用指针是实体类型,编译器为其单独分配内存空间,而引用只是变量的别名,在语言上我们可以把它看做不是实体类型,不单独分配空间,对一个对象的引用,就是直接对这个对象的操作。sizeof的时候,指针得到的是指针本身的大小,引用得到的是变量的大小。指针可以不初始化,可以为空,可以改变所指的对象,但引用必须初始化,且必须指向所引用的对象,不能更换目标。函数参数选择引...原创 2019-03-02 16:02:35 · 1411 阅读 · 0 评论 -
C++单继承,多重继承,虚拟继承与内存布局
Multiple Inheritance - C++多继承比单继承更复杂,引入了歧义的问题,以及虚继承的必要性;虚继承在大小,速度,初始化,复制的复杂性上有不小的代价,当虚基类中没有数据时还是比较合适的;多继承有时也是有用的。典型的场景是:public继承自一些接口类,private继承自哪些实现相关的类。歧义class A{public: void func();};...原创 2019-03-04 22:51:57 · 3103 阅读 · 1 评论 -
C++11/14/17-实验楼笔记
目录环境准备被弃用的特性常量字符串赋值需要使用const char*与C的兼容性语言可用性的强化类型推导区间迭代列表初始化模板增强面对对象增强语言运行期的强化Lambda表达式std::functionstd::bind/std::placeholder右值引用新增容器智能指针和引用计数RAII与引用计数std:...原创 2019-02-28 20:45:27 · 2551 阅读 · 0 评论 -
C++二维数组作参数时和二维指针的异同
二维数组传参二维数组不同于一位数组,一维数组传参数时只需要传指针即可,无需指定大小。二维做参数时必须指定第二维的大小,否则编译不过。void lalala(int a[][],int m, int n) //编译报错void lalala(int a[][10],int m, int n) //编译通过 因为对于表达式a[i][j]来说,编译器认为它的含义是*(*(a...原创 2018-10-01 20:13:29 · 2877 阅读 · 2 评论 -
字符画——ASCII art
首先先推荐几个生成字符画的网址http://www.topster.de/zh/text-to-ascii/https://linux.cn/article-3405-1.html 五个超赞的字符艺术生成器!http://glassgiant.com/ascii/ 推荐(生成汉字比较清晰)http://www.ascii-art-generator.org/原创 2017-04-13 18:18:33 · 27193 阅读 · 0 评论 -
C++控制台光标与鼠标的操作
C++控制台光标与鼠标的操作原创 2017-04-07 23:14:20 · 7541 阅读 · 0 评论