随笔分类 -  C++

摘要:libcurl主要提供了两种发送http请求的方式,分别是Easy interface方式和multi interface方式,前者是采用阻塞的方式发送单条数据,后者采用组合的方式可以一次性发送多条数据 一、Easy interface libcurl的easy interface是最基本的用法,简 阅读全文
posted @ 2017-02-11 10:25 Kobe10 阅读(3320) 评论(0) 推荐(0)
摘要:unordered_map和map类似,都是存储的key-value的值,可以通过key快速索引到value。不同的是unordered_map不会根据key的大小进行排序, 存储时是根据key的hash值判断元素是否相同,即unordered_map内部元素是无序的,而map中的元素是按照二叉搜索 阅读全文
posted @ 2017-02-11 08:56 Kobe10 阅读(1190) 评论(0) 推荐(0)
摘要:auto 这个这个关键字用于声明变量的生存期为自动,即将不在任何类、结构、枚举、联合和函数中定义的变量视为全局变量,而在函数中定义的变量视为局部变量。这个关键字不怎么多写,因为所有的变量默认就是auto的。 register 这个关键字命令编译器尽可能的将变量存在CPU内部寄存器中而不是通过内存寻址 阅读全文
posted @ 2016-11-10 13:49 Kobe10 阅读(298) 评论(0) 推荐(0)
摘要:变量和函数的属性包括数据类型和数据的存储类别,存储类别指数据在内存中存储方式(静态和动态),包含auto,static,register,extern四种。 内存中。具体点来说内存分为三块:静态区,堆区,栈区。外部变量和全局变量存放在静态区,局部变量存放在栈区,动态开辟的内存存在堆区。 一、简要性比 阅读全文
posted @ 2016-11-10 13:45 Kobe10 阅读(1332) 评论(0) 推荐(0)
摘要:内存重叠,直到做到一个笔试题才知道了什么是内存重叠。先上题目吧,是一个淘宝的笔试题,当时有点懵,不知道这个名词是啥子意思。 题目:补充下面函数代码: 如果两段内存重叠,用memcpy函数可能会导致行为未定义。 而memmove函数能够避免这种问题,下面是一种实现方式,请补充代码。 #include 阅读全文
posted @ 2016-11-02 15:49 Kobe10 阅读(3257) 评论(0) 推荐(0)
摘要:关键字概述 很多朋友看到这儿可能会有疑问,往往其它讲C语言的书籍都是从HelloWorld,数据类型开始C语言学习的,为什么我们要从C语言的关键字开始呢?关于这点,我有两点需要说明: 本章节面向的读者对象是有一定的C语言基础知识的朋友(至少应该学习过大学里的C语言程序设计等类似的课程) 本章节结合了 阅读全文
posted @ 2016-11-01 17:24 Kobe10 阅读(421) 评论(0) 推荐(0)
摘要:一.逻辑运算符 1.& 位与运算 1) 运算规则 位与运算的实质是将参与运算的两个数据,按对应的二进制数逐位进行逻辑与运算。例如:int型常量4和7进行位与运算的运算过程如下: 4=0000 0000 0000 0100 &7 =0000 0000 0000 0111= 0000 0000 0000 阅读全文
posted @ 2016-08-11 09:41 Kobe10 阅读(594) 评论(1) 推荐(2)
摘要:auto_ptr是C++标准库中(<utility>)为了解决资源泄漏的问题提供的一个智能指针类模板(注意:这只是一种简单的智能指针) auto_ptr的实现原理其实就是RAII,在构造的时候获取资源,在析构的时候释放资源,并进行相关指针操作的重载,使用起来就像普通的指针。 std::auto_pt 阅读全文
posted @ 2016-08-04 16:40 Kobe10 阅读(270) 评论(0) 推荐(0)
摘要:C++中预定义的运算符的操作对象只能是基本数据类型。但实际上,对于许多用户自定义类型(例如类),也需要类似的运算操作。这时就必须在C++中重新定义这些运算符,赋予已有运算符新的功能,使它能够用于特定类型执行特定的操作。运算符重载的实质是函数重载,它提供了C++的可扩展性,也是C++最吸引人的特性之一 阅读全文
posted @ 2016-07-09 16:14 Kobe10 阅读(259) 评论(0) 推荐(0)
摘要:多重继承 一个类采用多个直接基类的情况称为多重继承,采用一个基类就是单继承。 两个基类中可能会出现名字一样的成员函数 在派生类中就必须消解这两个基类的成员函数带来的歧义性,最好的方法:在派生类中重新定义这个同名的函数。这样,派生类就把这个函数局部化了,从而覆盖了两个基类中的那个函数。 我们还可以通过 阅读全文
posted @ 2016-06-05 15:14 Kobe10 阅读(728) 评论(0) 推荐(0)
摘要:C++模板 模板是C++支持参数化多态的工具,使用模板可以使用户为类或者函数声明一种一般模式,使得类中的某些数据成员或者成员函数的参数、返回值取得任意类型。 模板是一种对类型进行参数化的工具; 通常有两种形式:函数模板和类模板; 函数模板针对仅参数类型不同的函数; 类模板针对仅数据成员和成员函数类型 阅读全文
posted @ 2016-06-05 10:56 Kobe10 阅读(506) 评论(0) 推荐(1)
摘要:一个string模板 简单的定义 1 template <class C>//模板形式,C是一个类型名字,不一定是某个类的名字 2 class String{ 3 struct srep; 4 srep *rep; 5 public: 6 String(); 7 String(const C*); 阅读全文
posted @ 2016-06-04 11:36 Kobe10 阅读(289) 评论(0) 推荐(0)
摘要:类 一个类就是一个用户定义类型 一个结构体也是一种类。(成员函数),因为不同的结构体中可能会有相同的名字的成员函数,所以我们在定义成员函数的时候就必须给出有关结构体的名字 void Data::init(int dd,int mm,int yy){} 非成员函数禁止访问私有成员 类中的静态成员: 静 阅读全文
posted @ 2016-05-27 11:15 Kobe10 阅读(426) 评论(0) 推荐(0)
摘要:指针 类型为T*的变量能保存一个类型T对象的地址 Char c=‘a’;Char * p=& c;//保存了c的地址 指针的操作一般都是间接的引用,就是相当于引用指针所指的对象。 0是一个特殊的东西。它可以被当做任意的整型,浮点类型,或者是指针,这些都是视情况而定的。0表示当时的一个指针没有指向任何 阅读全文
posted @ 2016-05-25 14:54 Kobe10 阅读(278) 评论(0) 推荐(0)
摘要:引言 异常,让一个函数可以在发现自己无法处理的错误时抛出一个异常,希望它的调用者可以直接或者间接处理这个问题。而传统错误处理技术,检查到一个局部无法处理的问题时: 1.终止程序(例如atol,atoi,输入NULL,会产生段错误,导致程序异常退出,如果没有core文件,找问题的人一定会发疯) 2.返 阅读全文
posted @ 2016-05-25 11:15 Kobe10 阅读(326) 评论(0) 推荐(0)
摘要:名字空间 成员函数可以在名字空间的定义里去声明,然后再去采用一种定义方式例如:namespace__name::member_name的方式去定义这个成员函数 1 namespace parser{ 2 double prim(bool); 3 double term(bool); 4 } 5 6 阅读全文
posted @ 2016-05-25 11:11 Kobe10 阅读(198) 评论(0) 推荐(0)
摘要:函数的定义和声明 函数的声明和定义都必须描述相同的类型,但是声明可以不写参数名,定义则必须写参数名,但是他们的参数名字可以不同。 一个局部变量被声明为static,那么这个局部变量将只会被初始化一次,而其他的局部变量则随情况而定进行初始化 1 #include<iostream> 2 using n 阅读全文
posted @ 2016-05-25 10:26 Kobe10 阅读(272) 评论(0) 推荐(0)
摘要:布尔量 Eg: bool b1=a==b;//这个例子中,=是赋值,==是判断是否相等,所以先是判断是否相等,a如果等于b,b1的值就是true,否则就是false了 Bool经常被用作检查某些条件是否成立的函数的结果类型, Eg:bool greater(int a,int b) {return 阅读全文
posted @ 2016-05-23 20:12 Kobe10 阅读(270) 评论(0) 推荐(0)