C++
文章平均质量分 92
苟且.
这个作者很懒,什么都没留下…
展开
-
深入探索C++对象模型
指针指针都是占据的四字节,那么是如何区分指针指向的对象类型呢?其关键是,不同类型改变的是,被指出的内存的大小和其内容默认构造函数当编译器认为需要的时候,就会生成默认构造函数(是编译器需要,而不是程序需要)带有默认构造函数的类,是其他类的成员class Foo { public: Foo(); Foo(int); ...};class Bar{public:...原创 2019-12-12 15:49:09 · 195 阅读 · 0 评论 -
面向对象相关
面向对象相关面向对象和面向过程有什么区别出发点不同:面向对象是用符合常规思维方式来处理客观世界的问题,强调吧问题域的要领直接映射到对象及对象之间的接口上面向过程,强调的是过程的抽象化和模块化,是以过程为中心构造或处理客观世界问题的层次逻辑关系不同:面向对象是以对象的集合类作为处理问题的基本单位,尽可能的是计算机向客观世界靠拢,以使问题的处理更清晰直接面向对象是用类的层次结构来提现...原创 2019-12-12 15:48:34 · 126 阅读 · 0 评论 -
Linux
执行成功后,会返回0。1表示未提交?2表示无此文件或路径vi/vim 文件名 查的内容,若不存在则创建新的touch 文件名: 新建文件cat:1.cat filename :一次显示整个文件2.cat>filename : 创建新文件,不能编辑已有文件3.cat file1 file2 >file : 将前2文件合并到一个新文件grep -rn “要查的内容” /...原创 2019-12-12 15:48:11 · 675 阅读 · 0 评论 -
内存分配,sizeof,指针,预编译,结构体和类,位操作,函数,数组,变量,字符串,编译
内存分配的形式1.由符号起始的区块BSS(block started by symbol):存放未初始化的全局数据和静态数据。资源由系统自动释放2.数据段:存放已初始化的全局变量3.代码段:也叫文本段,通常指用来存放程序执行代码的一块内存区域4.堆:malloc和new等方式分配的内存5.栈:用于存放程序临时创建的局部变量。一般包括{}内的定义的变量(static除外)堆,栈,...原创 2019-12-12 15:47:56 · 206 阅读 · 0 评论 -
关键字总结
关键字static能被同一个文件内的所有函数访问static 修饰的类的变量是属于类的,而不是属于对象的即即使没有实例化对象,也可以使用类中的静态变量非静态成员,每个对象都有一个副本,但是静态变量,所有对象共用一个副本遵循private,public,protect要在类外初始化,且初始化时不需要用static关键字static 修饰的类的函数也是属于类的,而不是属于对象的...原创 2019-12-12 15:47:45 · 116 阅读 · 0 评论 -
C++基础
double和float的使用,计算代价几乎相同,有时甚至double更快,因此一般用double无符号unsign int a = 10; int b = -20;cout<< a+b;//这里就会出问题,因为a是unsign的,a+b实际上是a=a+b,就会出错字符‘a’和字符串“a”的区别。字符串以‘\0’结尾字面值就是一眼就能看出来的值,如数字,字符,bool若两...原创 2019-12-12 15:46:46 · 95 阅读 · 0 评论 -
C++基础练习
%(取余),~(取反),^(按位异或),&(按位与),|(按位或) 这几个运算符都要求运算对象必须是整型预处理指令指示在程序正式编译前就由编译器进行的操作,可放在程序中任何位置。源文件的每一行只能有一条预处理命令,如果指令一行放不下,可以通过反斜杠“/”进行控制。宏名通常由大写字母表示,而非必须宏是在预编译期间进行的,将代码中的指定字符转换,转换结束后,再进行编译,所以不占...原创 2019-12-12 15:46:24 · 212 阅读 · 0 评论 -
模板与泛型编程
定义模板函数模板下面的两个函数,除了参数类型,其他完全相同如果我们需要不同类型参数的相同函数我们可以定义一个通用的函数模板,而不是为每个类型都定义一个新的函数template &lt;typename T&gt;int compare(const T &amp;v1, const T &amp;v2){ if(v1 &lt; v2) retunrn -1; if(v1 ..原创 2019-03-14 10:32:58 · 164 阅读 · 0 评论 -
拷贝控制
拷贝,赋值与销毁拷贝构造函数即使我们自己定义了一个拷贝构造函数,编译器也会自动生成一个通常,拷贝构造函数是一个第一参数为自身引用的函数类内:Sales_data (const Sales_data&){…}拷贝构造函数被用来初始化非引用类类型参数。这一特性也解释了,为什么拷贝构造函数的参数必须为引用类型拷贝构造函数就是在新建类的时候使用:如果A是一个已经定义的类,那么:S...原创 2019-05-09 10:19:10 · 127 阅读 · 0 评论 -
类继承
概念继承、基类和派生能够从已有的类继承出新的类,原始类成为基类,继承类成为派生类。派生类继承了基类原有的特性,但是也派生出了其特有的新特征。虚函数基类将类型相关的函数与派生类不做改变而直接继承的函数区分对待对于某些函数,基类希望它的派生类各自定义适合自身的版本,此时基类就将这些函数声明成虚函数(virtual)virtual派生类必须在其内部,对所有重新定义的虚函数进行...原创 2019-03-13 14:02:48 · 220 阅读 · 0 评论 -
动态内存
前言静态内存用来保存局部static对象,类static数据成员以及定义在任何函数之外的变量。由编译器自动创建和销毁static对象在使用之前分配,在程序结束时销毁栈内存用来保存定义在函数内的非static对象由编译器自动创建和销毁仅在其定义的程序块运行时才存在堆/自由空间用堆来存储动态分配的对象——那些在程序运行时分配的对象。动态对象的生存期由程序来控制,也就是说,当动态...原创 2019-03-08 16:48:44 · 91 阅读 · 0 评论 -
关联容器(map和set,支持高效的关键字查找和访问。key-value相对应,key起到索引的作用,value是和key相关联的数据)
使用关联容器map的使用map的意义在于快速找到与key对应的数据,并进行相应的操作map<string, size_t> word_count; //string 到size_t的空mapstring word;while(cin>> word) ++word_count[word]; //此时的就是value的值进行了加操作for(const a...原创 2019-03-07 15:22:31 · 1022 阅读 · 0 评论 -
泛型算法(只看了一点,待后续补充)(称为算法是因为它实现了一些经典算法的公共接口,如排序和搜索。称为泛型,是因为它可以用于不同类型的元素和多种容器类型,不仅包括标准库类型,还包括内置数组类型)
find,用于查找特定值可以在任意容器中查找auto result = find(vec.cbegin(), vec.cend(), val); //返回结果指向该元素。若没有则返回vec.end()sum(要求被加的元素,必须有+操作)int sum = accumulate(vec.cbegin(), vec.cend(), 0);//将vec中的数,以0为基础,全部相加....原创 2019-03-06 18:42:00 · 161 阅读 · 0 评论 -
顺序容器(array,list,forward_lisy,deque,vector,string)
概览类别特点vector可变大小数组,支持快速随机访问,在尾部之外的位置增减元素可能很慢deque双端队列,支持快速随机访问,在头尾位置增删速度很快,中间位置增删元素的代价(可能)很高list双向链表,只支持双向顺序访问,在任何位置增删都很快forward_list单向链表,只支持单向顺序访问,在任何位置增删都很快array固定大小数组,支持...原创 2019-03-06 15:04:28 · 293 阅读 · 0 评论 -
C++复习之——类,运算符重载,友元
1.定义在类内部的函数,是隐式的内联函数;inline成员函数应该与相应的类定义在头文件中2.所有成员都必须在类内声明,但是函数体定义可以是在类内也可以实在类外;但是类外部的定义,就必须包含它的类名::3.如果我们给类定义了一个构造函数,那么编译器将不会自动为其生成默认构造函数。我们在不进行初始化而需要默认初始化的时候,就会出错。因此,只要我们为类定义了构造函数,就必须给类定义一个默认构造...原创 2019-02-28 14:49:39 · 306 阅读 · 0 评论