![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++
_云胡
这个作者很懒,什么都没留下…
展开
-
Ubuntu添加gcc头文件搜索路径
对个人用户生效sudo vim ~/.bashrc在该文件末尾添加#gccC_INCLUDE_PATH=$C_INCLUDE_PATH:your_pathexport C_INCLUDE_PATH#g++CPLUS_INCLUDE_PATH=$CPLUS_INCLUDE_PATH:your_pathexport CPLUS_INCLUDE_PATH最后,重启终端即可生效可用以下命令查看搜索路径echo | gcc -x c -v -E -echo | gcc -x c++ -v原创 2021-01-01 16:54:37 · 1776 阅读 · 0 评论 -
C++学习笔记15
空间配置器作为STL的最后一个组件,感觉有点复杂,以后有机会再写吧移动语义左值和右值左值和右值都是根据表达式而言的左值是指表达式结束后依然存在的持久对象右值是指表达式结束后就不再存在的临时对象区分:能对表达式取地址则为左值,否则为右值 临时对象的构造、析构会带来不必要的资源拷贝。右值引用可以在语法层面识别出临时对象,在使用临时对象构造新对象(拷贝构造)的时候,将临时对象所持有的...原创 2019-08-11 23:22:49 · 97 阅读 · 0 评论 -
C++学习笔记14
用模板实现单例对象及其自动释放#include <iostream>using namespace std;template<class T>class Singleton{ class AutoRelease { public: AutoRelease() {cout << "AutoRelease()" &...原创 2019-08-10 22:30:20 · 97 阅读 · 0 评论 -
C++学习笔记13
迭代器概述C++中的迭代器类似于指针,用于指示容器中的某个元素,一般用来遍历容器中的元素。比较迭代器是否相等用==,!=,有很多朋友会对迭代器进行<或>等操作,但最好别这么做,因为这种行为就如同比较指针存储的地址大小,这是没有意义的分类C++中的迭代器可分为5类,分别是:①随机访问迭代器 ②双向迭代器 ③前向迭代器 ④输出迭代器 ⑤输入迭代器。这5中迭代器的功能按前述顺序依次减...原创 2019-08-07 22:49:49 · 99 阅读 · 0 评论 -
C++学习笔记06
今天的内容很轻松,主要学习了版本控制系统GitHub的使用什么是GitHub?GitHub是一个面向开源及私有软件项目的托管平台,因为只支持git 作为唯一的版本库格式进行托管,故名GitHub。(摘自百度百科)注册GitHub去Github注册即可安装GitHubLinux$sudo apt-get install gitWindows直接下载Git和Git Extensio...原创 2019-07-28 10:40:10 · 63 阅读 · 0 评论 -
C++学习笔记05
今天主要讲了C++的log4cpp库概述Log4cpp是个基于LGPL的开源项目,移植自Java的日志处理跟踪项目log4j,并保持了API上的一致。其类似的支持库还包括Java(log4j),C++(log4cpp、log4cplus),C(log4c),python(log4p)等。(摘自百度百科)简言之,log4cpp可以理解为一个日志管理系统。主要部件记录器 Category...原创 2019-07-27 23:23:57 · 97 阅读 · 0 评论 -
C++学习笔记12
STL全称为standard template library,由以下六个部分组成 ①容器 container,存储数据 ②迭代器 iterator,访问容器中的元素 ③适配器 adapter,基础数据结构------>新的数据结构 ④算法 algorithm,对容器元素进行操作 ⑤函数对象 functor,对元素进行定制化操作 ⑥配置器 allocator,内存管...原创 2019-08-07 22:49:33 · 76 阅读 · 0 评论 -
C++学习笔记11
模板本质上来说,模板就是将类型参数化以解决强类型语言的严格性和灵活性的冲突。当然这一问题的解决还有两种方法,分别为带参数宏定义和重载函数。 其中普通函数与函数模板可以重载,而且函数模板之间也可以重载。模板一般不进行分文件编写,可就在头文件中实现,头文件后缀为.hpp。 模板可分为函数模板和类模板,通过模板实例化构造出具体的函数和类称为模板函数和模板类。 普通函数优先于模板函数的执行。...原创 2019-08-07 22:46:20 · 234 阅读 · 1 评论 -
C++学习笔记08
类型转换构造函数:其他数据类型——>自定义数据类型类型转换函数:自定义数据类型——>其他数据类型但一般情况下不要使用类型转换函数特点是成员函数没有返回值类型在函数体内以传值形式返回一个目标类型的变量(对象)PIMPL设计模式简介是一种常用的用来对“类的接口和实现”进行解耦的方法,以避免在头文件中暴露私有细节。但PIMPL并非严格意义上的设计模式,可看作是桥接设计...原创 2019-07-31 20:28:57 · 129 阅读 · 0 评论 -
C++学习笔记01
今天开始学C++,计划开始更新每天的学习笔记,希望在接下来的一个月中能坚持下去。C++的发展历史诞生C++是C语言的继承,由贝尔实验室的Bjarne Stroustrup博士于1982年在C语言的基础上发明,至今已有近40年的历史。C++可以看作是C语言的超集,C代码几乎不经修改就可以在C++环境下运行。由于C++既支持面向过程编程,也支持面对对象编程,泛型编程和模板元编程等范式,功能及其强...原创 2019-07-22 22:43:16 · 145 阅读 · 0 评论 -
C++学习笔记10
多态含义多态是面向对象程序设计语言中数据抽象和继承之外的第三个基本特征,是指对于同一个消息或同一种调用,在不同的场合或不同的情况下,会执行不同的行为。在子类函数前加上virtual关键字,并在父类上声明虚函数,就会发生多态。多态的实质就是父类的引用或指针绑定或指向子类对象。分类静态多态(函数重载)动态多态(虚函数,继承关系)二者区别静态联编:地址早绑定,在编译阶段绑定好地址;函数重...原创 2019-08-04 16:37:05 · 99 阅读 · 0 评论 -
C++学习笔记04
new/delete 工作机制使用new发生的3个步骤1.调用operator new的标准库函数2.运行该类型的一个构造函数初始化对象3.运行指向新分配并构造的构造对象的指针如果把operator new放在全局位置,当执行new/delete时,会对所有类型生效只能创建栈对象不能动态创建对象,要禁用new运算符,即把operator new设为private权限如在这里插入代...原创 2019-07-25 22:50:13 · 123 阅读 · 0 评论 -
C++学习笔记09
继承生成方式吸收基类成员改造基类成员添加自身成员继承方式public:接口继承,保持成员的public和protected属性不变protected:将继承而得的所有成员权限设为protectedprivate:将继承而得的所有成员权限设为private局限构造函数,析构函数,用户重载的new/delete,= 以及友元关系不能重载多重继承每一个继承的基类都要显式给...原创 2019-08-02 21:30:14 · 213 阅读 · 0 评论 -
C++学习笔记03
今天学习的内容较少类的特别成员对于const数据成员,引用的数据成员以及类的对象成员,都要放在初始化列表中静态成员变量必须在类外定义,所有类共享。静态成员函数无隐含this指针,不能直接访问非静态的数据成员和成员函数,只能访问静态数据成员和静态成员函数。对于静态成员函数,可以直接使用类名调用,因为它只能操作静态数据成员,即与某个具体对象无关。const成员函数不能修改数据成员,只能调...原创 2019-07-24 23:50:45 · 61 阅读 · 0 评论 -
C++学习笔记07
友元友元是一种定义在类外部的普通函数或类,需要在类中声明,基本格式为friend 函数原型,友元不是成员函数,但它可以访问类中的私有成员存在形式友元普通函数友元成员函数友元类特点单向不具有传递性不能被继承。运算符重载运算符重载,就是对已有的运算符重新进行定义,赋予其另一种功能,以适应不同的数据类型。重载规则操作符重载必须具有一个类类型或枚举类型的操作数优先级和...原创 2019-07-29 23:34:42 · 75 阅读 · 0 评论 -
C++学习笔记02
stringC++风格字符串相比C风格字符串更加灵活,如string s1 = "hello";string s2 = "world";string s3 = s1 + s2;const char *pstr = s4.c_str();//将C++风格字符串转换为C风格字符串//const char *pstr = s3.data();//同上C程序内存布局区域特点...原创 2019-07-23 23:52:54 · 64 阅读 · 0 评论