C++知识点
文章平均质量分 58
htt789
这个作者很懒,什么都没留下…
展开
-
gflags的使用
gflags是google开源的一套命令行参数解析工具,需要安装作为第三方库gflags使用方法: 1.包含头文件#include<gflags/gflags.h>2.定义参数 DEFINE_type(参数变量名,参数默认值,”参数帮助信息”) 例如:DEFINE_int32(port, 80, "listen port");可以定义以下几种形式: ...原创 2018-05-14 11:24:14 · 1385 阅读 · 0 评论 -
C++知识点12:深拷贝浅拷贝
原 C++(笔记)深浅拷贝and何时调用 2017年03月23日 22:23:44 阅读数:612 ...转载 2018-07-19 10:24:07 · 191 阅读 · 0 评论 -
循环与递归
递归定义:在函数内部调用函数自身缺点:每一次调用函数需要在内存栈中分配空间,用来保存参数,返回地址及临时变量 1.时间消耗:往栈中压入、弹出数据需要时间 2.空间消耗:调用栈溢出;每一次调用在栈内分配空间,但栈的容量是有限的,调用层级太多则会超过栈容量循环性能由于递归,但代码没有递归简洁...原创 2018-07-07 11:08:59 · 130 阅读 · 0 评论 -
C++知识点12:继承和组合
继承特性:依据一个或多个基类来定义一个新的派生类(子类获得父类特性)作用:程序易于创建和维和;重用代码功能;提高执行时间(创建新类时不需要重新编写新的数据成员和成员函数)继承控制访问:派生类可以访问基类中所有的非私有成员,一个派生类继承了所有的基类方法,但下列情况除外: 基类的构造函数、析构函数和拷贝构造函数。 基类的重载运算符。 基类的友元函数继承类型:1....原创 2018-07-19 16:58:07 · 315 阅读 · 0 评论 -
C++13:内存分配方式
程序存在三种内存方式:静态内存、栈内存、堆内存 静态内存: 在编译时期,知道所有变量的存储要求 全局变量,static变量栈内存: 在运行时期,已知数据结大小。 在执行函数时,函数内局部变量,函数执行结束时这些存储单元自动被释放。堆内存: 在运行时期,无法确定数据大小。比如可变长度串和对象实例.堆由大片的可利用块或空闲块组成,堆中的内存可以按照任意顺序分配和释放. mallo...原创 2018-07-30 20:33:27 · 206 阅读 · 0 评论 -
C++知识点14:静态链接库和动态链接库区别
库:函数的集合 作用:共享代码静态、动态指链接 程序编译过程中,在链接阶段,程序生成的汇编文件和库进行链接,生成可执行文件。 1.静态库(.a .lib)静态链接库在程序编译时被连接到目标代码中参与编译;链接时将库完整地拷贝至可执行文件中,被多次使用就有多份冗余拷贝;生成可执行程序之后,静态链接库不需要(因已将函数拷贝到可执行文件中)。静态库特点: 1.静态库对函数...原创 2018-08-06 15:17:31 · 7397 阅读 · 0 评论 -
C++知识点15:const关键字
作用:修饰数据或函数类型为常类型修饰指针1.指针内容为常量 const在*的左边 ,指针内容(*a)为常量,指针为变量。可以不进行初始化const int* a=&bint const *a=&b*a=600//错 指针内容为常量,不能赋值b=600//对 改变b的值->改变*a的值c=600;a=&c//对 改变a的值->改...原创 2018-08-10 22:16:06 · 256 阅读 · 0 评论 -
虚函数内存分配
C++类虚函数内存分布(这个 你必须懂) 转自:http://www.cnblogs.com/jerry19880126/p/3616999.htmlC++类内存分布书上类继承相关章节到这里就结束了,这里不妨说下C++内存...原创 2018-08-20 11:08:29 · 525 阅读 · 0 评论 -
合并两个排序的整数数组A和B变成一个新的数组(归并排序)
归并排序:将问题分成一些小的问题然后递归求解,将分的阶段得到的各答案合并在一起。 将两个有序数组合并为一个,给出A=[1,2,3,4],B=[2,4,5,6],返回 [1,2,2,3,4,4,5,6]。 解题思路:从头开始比较两个数列中的数,哪一个小就取出依次存入新的数组中,直到其中一个全部比较完,将另一个数组剩下的部分直接存入新的数组中。vector<int> merge...原创 2018-04-20 21:01:58 · 25080 阅读 · 0 评论 -
堆排序
堆排序 堆:堆是具有以下性质的完全二叉树:每个结点的值都大于或等于其左右孩子结点的值,称为大顶堆;或者每个结点的值都小于或等于其左右孩子结点的值,称为小顶堆 大顶堆:arr[i] >= arr[2i+1] && arr[i] >= arr[2i+2] 小顶堆:arr[i] <= arr[2i+1] && arr[i] <= arr[2i...原创 2018-09-10 10:15:54 · 138 阅读 · 0 评论 -
指针和数值转换知识点
void main(){ short *p,*q; short arr[15]={0}; p=q=arr; p++; printf("%d,",p-q); printf("%d,",(char*)p-(char*)q); printf("%d",sizeof(arr)/sizeof(*arr));}指针p,q都是short类型,每次移..原创 2018-05-07 20:57:14 · 1759 阅读 · 0 评论 -
C++知识点11:内联函数 / 内联函数和宏define的区别
关键字:inline,写在函数定义体前(不是声明) 作用:解决程序运行效率,不需要调用函数而是将函数直接嵌入到目标函数处。内联函数是真正的函数,只是在需要用到的时候,内联函数像宏一样的展开,所以取消了函数的参数压栈,减少了调用的开销。 运行时间:作用于程序编译的阶段,将函数直接嵌入到目标函数处inline int max(int a,int b){ return a&gt;b?a:...原创 2018-07-17 10:54:26 · 227 阅读 · 0 评论 -
C++知识点10:程序编译四个阶段
1.编译过程的四个阶段源程序到目标程序执行的四个阶段如图1所示,GCC编译C源代码有四个步骤:预处理—-&gt;编译—-&gt;汇编—-&gt;链接。&nbsp;以源程序hello.c为例12#include &lt;stdio.h&gt; int main(){ printf("ha转载 2018-07-17 09:18:33 · 2085 阅读 · 2 评论 -
C++知识点8:字符串
字符串定义1.字符串数组 char str[]=”123456”; 字符串数组分配内存; 2.字符串指针 char *str=”123456”; 定义常量字符串”123456”,再用str字符指针指向字符串。 注:定义字符串用双引号“”,定义字符串中的某一个元素用单引号’‘。str:字符串指向第一个元素的指针 *str:字符串第一个元素值 &str:字符串内存地址字...原创 2018-06-28 15:38:13 · 375 阅读 · 0 评论 -
struct结构体
struct Point { int x; int y;};定义了一个结构体类型Point,声明变量时直接Point p1;如果使用typedef,又会造成区别struct Point { int x; int y;}p1;//p1是一个结构体变量typedef struct Point { int x; int y;}p2; ...原创 2018-05-15 09:22:10 · 130 阅读 · 0 评论 -
1.传递命令行运行参数
int main(int argc,char* argv[])argc是命令行总的参数个数 argv[]是argc个参数,其中第0个参数是程序的全名,以后的参数命令行后面跟的用户输入的参数 终端传递参数及运行结果 ...原创 2018-06-21 21:40:38 · 1063 阅读 · 0 评论 -
2.sizeof操作符
定义:sizeof( ) 作用:返回一个对象或类型的内存字节数1.数据类型字节大小(64位编译器) 2.数组的sizeof char ss2[]="0123456789"; char ss3[100]="0123456789"; int ss4[100]; char q1[]="abc"; char q2[]="a\n"; cout&...原创 2018-06-21 23:00:39 · 195 阅读 · 0 评论 -
3.C++引用
1.引用:某一变量/实例的别名,对引用操作与对变量直接操作一样。 声明方法:类型 &amp;amp;引用名=目标变量名 例如:int a;int &amp;amp;b=a;1.引用是变量的别名,引用本身不占内存,与目标变量共同指向目标变量的地址。 2.定义引用时,必须对qi 示例代码:void fun(int &amp;amp;x){ cout&amp;lt;&amp;lt;&quo原创 2018-06-25 10:54:17 · 102 阅读 · 0 评论 -
4.拷贝构造函数和赋值函数区别
拷贝构造函数:创建对象时,使用同一类中的对象初始化新创建的对象。 拷贝构造函数形式:classname (const classname&amp;amp; obj){ //}其中obj是对象引用,用于初始化另一个对象形参为什么是const和引用? 1.const:防止意外修改实参,保护程序安全。 2.引用:防止对象初始化新的对象时,循环调用拷贝构造函数。 假设拷贝构造函数为...原创 2018-06-25 15:25:31 · 195 阅读 · 0 评论 -
9:链表
链表结构:动态数据结构:由一系列节点组成 每一个节点包括数据域和指针域。数据域为当前节点的数据,指针域为指向下一个节点的地址struct ListNode{ int data; ListNode* next;};链表第一个节点的地址为头指针head,结束节点的指针域为node-&amp;gt;next=NULL; 链表和数组区别:数组:连续存储单元。优点:可以对元...原创 2018-06-30 09:53:44 · 83 阅读 · 0 评论 -
5.赋值运算符函数
1.返回值类型为自身对象引用 原因:减少一次拷贝构造函数,引用可以连续赋值。 2.参数为常量引用 原因:const不改变原来对象的值,引用避免了拷贝构造函数。当参数不是引用而是实例时,从形参到实参会调用一次拷贝构造函数。A&amp;amp; operator=(const A obj){ ...}int main(){ A a; A b; b=a;//A...原创 2018-06-26 09:36:27 · 188 阅读 · 0 评论 -
10.栈和队列
栈只能在栈顶端进行操作,“后进先出”。 常用操作:#include&lt;stack&gt;std::stack&lt;int&gt; s;s.empty();//判断是否为空s.push(x);//插入s.pop();//删除s.size();//大小s.top();//返回栈顶元素队列 必须在队列两端进行操作,一端插入,一端删除。 常用操作:#include&...原创 2018-06-30 14:50:11 · 116 阅读 · 0 评论 -
C++知识点9:virtual虚拟函数
虚函数:基类中加入关键字virtual的函数 作用:在基类的派生类中可以通过重写虚函数实现对基类虚函数的覆盖。 当基类指针指向派生类对象时,指针调用的函数实际上是调用了派生类的函数。基类函数中有virtual关键字 输出结果:derived//调用派生类函数#include &amp;amp;lt;iostream&amp;amp;gt;using namespace std;class base{p...原创 2018-07-16 16:39:09 · 651 阅读 · 0 评论 -
C++知识点10:构造函数和析构函数
构造函数:生成对象时调用构造函数 生成派生类对象时先调用基类构造函数在调用派生类构造函数#include &lt;iostream&gt;using namespace std;class base{public: base(){cout&lt;&lt;"base"&lt;&lt;endl;} virtual ~base(){}};cl原创 2018-07-16 17:15:37 · 274 阅读 · 0 评论 -
static作用 const作用
static的作用一、对变量 1、局部变量 在局部变量之前加上关键字static,局部变量就被定义成为一个局部静态变量。 1)内存中的位置:静态存储区 2)初始化:未经初始化的全局静态变量会被程序自动初始化为0(自动对象的值是任意的,除非他被显示初始化) 3)作用域:作用域仍为局部作用域,当...转载 2018-08-10 22:30:05 · 371 阅读 · 0 评论