![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++
KAIHINGWON
这个作者很懒,什么都没留下…
展开
-
C++11新特性
文章目录auto:lambda表达式:右值引用与移动语义:智能指针:nullptr 代替了NULLtuple元祖 & 花括号初始化override关键标识auto:1)auto声明的变量必须要初始化,否则编译器不能判断变量的类型2)auto不能被声明为返回值,auto不能作为形参,auto不能被修饰为模板参数3)auto并不会影响编译速度,因为编译时本来也要右侧推导然后判断与左侧是否匹配lambda表达式:函数式编程int a = 1, b = 2; auto multi = []原创 2020-08-13 14:07:23 · 206 阅读 · 0 评论 -
工厂模式
工厂模式分为3种,即简单工厂模式、工厂方法模式、抽象工厂模式,C++的工厂模式主要利用到虚函数。简单工厂简单工厂模式有一个工厂,可以生产多个产品,包含两个接口,一个是产品类的,一个是工厂类的。产品类需要有一个基类,基类中的具体产品实现需要是个纯虚函数,这样一来,产品的子类必须要重写具体的产品实现,实现不同的功能。产品类封装完成后,还需要一个工厂类,工厂类对产品类再次封装,最终实现由一个工厂对象决定创建出哪一种产品类的实例。//衣服的抽象class Clothes{public: virtua原创 2020-08-10 23:15:05 · 142 阅读 · 0 评论 -
QT-观察者模式
观察者模式是定义对象间一种一对多的依赖关系,使得每当一个对象改变状态,则所有依赖于它的对象都会得到通知并被自动更新。既多个观察者都依赖于同一个被观察者的数据,当被观察对象的数据发生改变时,则所有依赖于被观察对象的观察者,都会作出各自的更新动作。例如:以不同的显示形式显示某一数据,LCD显示、Label中显示等1)定义一个被观察对象(目标),其中可以有任意多个观察者,需要提供添加和删除观察者的接口,在被观察对象中定义通知观察者接口2)定义观察者父类,添加刷新的虚函数接口3)定义不同的观察者子类,重写原创 2020-08-10 15:59:29 · 1666 阅读 · 0 评论 -
指针函数和函数指针
指针函数指针函数: 它的本质是一个函数,不过它的返回值是一个指针。其声明的形式如下所示:ret *func(args, ...);使用举例:# include <stdio.h># include <stdlib.h>int * func_sum(unsigned int n){ static int sum = 0; //注意此次必须为静态,否则函数结束后该变量会被释放 int *p = ∑ for (int i = 0原创 2020-08-06 19:26:56 · 102 阅读 · 0 评论 -
C++关键字
static:C语言中的static:(1)生命周期:static修饰的变量,存储在内存的静态存储区,无论是在函数内还是函数外,生命周期都是整个程序运行期间,static修饰的函数其生命周期也是整个程序的运行期间(2)作用域:static修饰的局部变量的作用域就是定义该变量的那个作用域内,static修饰的全局变量的作用域是从这个变量定义开始到整个程序结束(3)static修饰的变量都存储在静态区(4)static修饰的变量只能作用于本文件内,即使被extern修饰也不行(5)static修饰的原创 2020-08-03 00:53:40 · 174 阅读 · 0 评论 -
数据结构
链表struct ListNode{ int val; ListNode *next; //前驱指针 ListNode *pre; //后继指针};LeetCode:(206)反转链表(141)环形链表栈//栈#include <stack>stack<int> a//压入栈顶a.push();//栈顶弹出a.pop();//返回栈顶a.top();LeetCode:(20)有效的括号(232)用栈实现队列单端队列//单端队列#i原创 2020-07-22 23:32:52 · 110 阅读 · 0 评论 -
泛型编程 - 模板
模板是泛型编程的基础,泛型编程即以一种独立于任何特定类型的方式编写代码。模板是创建泛型类或函数公式。STL中的容器、迭代器、算法,都是泛型编程的例子,它们都使用了模板的概念。比如 向量,我们可以定义许多不同类型的向量,比如 vector 或 vector 。函数模板#include <iostream>#include <string>using namespace std;template <typename T>inline T const&am原创 2020-07-28 09:41:54 · 138 阅读 · 0 评论 -
sizeof(类)
我们要知道什么是类的实例化,所谓类的实例化就是在内存中分配一块地址,用sizeof对类名操作,得到的结果是该类的对象在存储器中所占据的字节大小,由于静态成员变量不在对象中存储,因此这个结果等于各非静态数据成员(不包括成员函数)的总和加上编译器额外增加的字节。确定类大小的几个原则:1.为类的非静态成员数据的类型大小之和2.有编译器额外加入的成员变量的大小,用来支持语言的某些特性(如:指向虚函数的指针)3.为了优化存取效率,进行的边缘调整4.与类中的构造函数,析构函数以及其他的成员函数无关非继承:原创 2020-07-28 00:03:07 · 417 阅读 · 0 评论 -
父类指针指向子类对象
#include <iostream>using namespace std; class Parent {public: Parent() { cout << "Parent Create" << endl; } ~Parent() { cout << "Parent Destroy" << endl; }}; class Child : public Parent{public: Child() {原创 2020-07-27 13:02:27 · 319 阅读 · 0 评论 -
STL容器
一、顺序容器容器中的位置来顺序保存和访问的vector向量(动态数组)底层数据结构为数组,特性:1)支持随机快速访问:时间复杂度为O(1);2)插入或删除非尾结点:时间复杂度为O(n);3)若初始分配空间已满会引起扩容,重新申请一个 1.5 / 2 倍大的内存空间,将原空间内容拷贝过来,随后释放原空间,操作耗时。注意:插入和删除操作后会导致旧迭代器失效。list列表底层数据结构为双向循环链表,特性:1)支持快速的增删:时间复杂度为O(1);2)查找元素:时间复杂度为O(n);2)内存原创 2020-07-19 20:06:04 · 122 阅读 · 0 评论