随笔分类 -  C/C++

摘要:reinterpret_cast<new_type> (expression) reinterpret_cast运算符是用来处理无关类型之间的转换;它会产生一个新的值,这个值会有与原始参数(expression)有完全相同的比特位。 什么是无关类型?我没有弄清楚,没有找到好的文档来说明类型之间到底都 阅读全文
posted @ 2017-10-11 15:34 阿玛尼迪迪 阅读(1531) 评论(0) 推荐(0)
摘要:static_cast<new_type> (expression) static_cast不仅可以用在指针和引用上,还可以用在基础数据和对象上;reinterpret_cast可以用在"没有关系"的类型之间,而用static_cast来处理的转换就需要两者具有"一定的关系"了。 常用场合 1、编译 阅读全文
posted @ 2017-10-11 14:48 阿玛尼迪迪 阅读(640) 评论(0) 推荐(0)
摘要:const_cast转换符是用来移除变量的const或volatile限定符。 对于const变量,我们不能修改它的值,这是这个限定符最直接的表现。但是我们就是想违背它的限定希望修改其内容怎么办呢? 下边的代码显然是达不到目的的: const int constant = 10; int modif 阅读全文
posted @ 2017-10-10 11:14 阿玛尼迪迪 阅读(388) 评论(0) 推荐(0)
摘要:阻塞队列,顾名思义,首先它是一个队列,而一个队列在数据结构中所起的作用大致如下图所示: 从上图可以看到,通过一个共享的队列,可以使得数据由队列的一端输入,从另一端输出; 常用的队列主要有以下两种:(当然通过不同的实现方式,还可以延伸出很多不同类型的队列,DelayQueue就是其中的一种) 先进先出 阅读全文
posted @ 2017-10-09 14:47 阿玛尼迪迪 阅读(241) 评论(0) 推荐(0)
摘要:一、什么是拷贝构造函数 首先对于普通类型的对象来说,它们之间的复制是很简单的,例如: int a=100; int b=a; 而类对象与普通对象不同,类对象内部结构一般较为复杂,存在各种成员变量。 下面看一个类对象拷贝的简单例子。 #include <iostream> using namespac 阅读全文
posted @ 2017-09-01 16:15 阿玛尼迪迪 阅读(290) 评论(0) 推荐(0)
摘要:vector::erase():从指定容器删除指定位置的元素或某段范围内的元素 vector::erase()方法有两种重载形式 如下: iterator erase( iterator _Where); iterator erase( iterator _First, iterator _Last 阅读全文
posted @ 2017-08-18 20:59 阿玛尼迪迪 阅读(1088) 评论(0) 推荐(0)
摘要:strstr(str1,str2) 函数用于判断字符串str2是否是str1的子串。如果是,则该函数返回str2在str1中首次出现的地址;否则,返回NULL。 实例: 阅读全文
posted @ 2017-08-18 20:35 阿玛尼迪迪 阅读(3764) 评论(0) 推荐(0)
摘要:C++11 新标准引入了一种更简单的for语句,这种语句可以遍历容器或其他序列的所有元素。范围for语句(range for statement)的语法形式是: expression表示的必须是一个序列,比如用花括号括起来的初始值列表、数组或者vector或string等类型的对象,这些类型的共同特 阅读全文
posted @ 2017-08-15 22:21 阿玛尼迪迪 阅读(858) 评论(0) 推荐(0)
摘要:编程时,常常需要把表达式的值赋给变量,这就要求在声明变量的时候清楚地知道表达式的类型。然而要做到这一点并非那么容易,有时甚至根本做不到。为了解决这个问题,C++11 新标准引入了auto类型说明符,用它就能让编译器替我们去分析表达式的所属的类型。和原来那些只对应一种特定类型的说明符(比如double 阅读全文
posted @ 2017-08-15 22:05 阿玛尼迪迪 阅读(253) 评论(0) 推荐(0)
摘要:例子: 头文件:state.h 源文件:state.cpp 其它源文件:t1.cpp t2.cpp t3.cpp, 这些源文件都包含头文件state.h。 需要定义一个全局变量供这些源文件中使用:方法如下 1、在 state.h声明全局变量: extern int a; 2、在state.cpp中定 阅读全文
posted @ 2017-08-13 22:19 阿玛尼迪迪 阅读(514) 评论(0) 推荐(0)
摘要:strncpy是C语言的库函数之一,来自C语言标准库,定义于string.h,函数原型是: 把src所指向的字符串中以src地址开始前n个字节复制到dest所指向的数组中,并返回dest。 (c/c++)复制字符串src中的内容(字符、数字、汉字...)到字符串dest中,复制多少由size_tn的 阅读全文
posted @ 2017-08-10 09:48 阿玛尼迪迪 阅读(1017) 评论(0) 推荐(0)
摘要:substr有2种用法:假设:string s = "0123456789";string sub1 = s.substr(5); //只有一个数字5表示从下标为5开始一直到结尾:sub1 = "56789" string sub2 = s.substr(5, 3); //从下标为5开始截取长度为3 阅读全文
posted @ 2017-08-07 12:31 阿玛尼迪迪 阅读(500) 评论(0) 推荐(0)
摘要:众所周知,sprintf不能检查目标字符串的长度,可能造成众多安全问题,所以都会推荐使用snprintf。 注:sprintf()函数:int sprintf( char *buffer, const char *format, [ argument] … );返回的是实际写入buffer的长度 自 阅读全文
posted @ 2017-08-06 21:59 阿玛尼迪迪 阅读(917) 评论(0) 推荐(0)
摘要:#include <stdio.h> int main() { int *p; int a = 2; unsigned long b = (unsigned long)((int *)&a); p = &a; printf("a的值=%d\n", *p); printf("a的地址=%p\n", & 阅读全文
posted @ 2017-08-06 18:29 阿玛尼迪迪 阅读(1444) 评论(0) 推荐(0)
摘要:1、map简介 map是一类关联式容器。它的特点是增加和删除节点对迭代器的影响较小,除了那个操作节点,对其它的节点都没有什么影响。对于迭代器来说,可以修改实值,而不能修改key。 2、map的功能 自动建立Key-value的对应。key和value可以是任意你需要的类型。 根据key值快速查找记录 阅读全文
posted @ 2017-08-06 16:29 阿玛尼迪迪 阅读(611) 评论(0) 推荐(0)
摘要:1.当自己的类指针指向自己类的对象时,无论调用的是虚函数还是实函数,其调用的都是自己的; 2.当指向父类对象的父类指针被强制转换成子类指针时候,子类指针调用函数时,只有非重写函数是自己的,虚函数是父类的; 3.当指向子类对象的子类指针被强制转换成父类指针的时候,也就是父类指针指向子类对象,此时,父类 阅读全文
posted @ 2017-08-03 23:15 阿玛尼迪迪 阅读(801) 评论(0) 推荐(0)
摘要:请看测试代码: 1、加括号和不加括号的区别 (1)加括号 a、若括号为空,即无实参项,那么理解为调用默认构造函数; b、若括号非空,即有实参项,可以理解为调用重载构造函数,或复合默认构造函数(形式参数均为默认值) (2)不加括号 调用默认构造函数,或复合默认构造函数 2、默认构造函数与复合默认构造函 阅读全文
posted @ 2017-08-02 12:52 阿玛尼迪迪 阅读(332) 评论(0) 推荐(0)
摘要:模板为什么要特化,因为编译器认为,对于特定的类型,如果你能对某一功能更好地实现,那么就该听你的。 模板分为类模板与函数模板,特化分为全特化与偏特化。全特化就是限定死模板实现的具体类型,偏特化就是如果这个模板有多个类型,那么只限定其中的一部分。 先看类模板: 请注意,必须要先有类模板,才能定义类模板的 阅读全文
posted @ 2017-07-28 15:32 阿玛尼迪迪 阅读(358) 评论(0) 推荐(0)
摘要:void的含义 void即“无类型” ,void*则为“无类型指针”,可以指向任何数据类型,所以又叫做“通用指针”。 void指针使用规范 ①void指针可以只想任意类型的数据,亦即可用任意数据类型的指针对void指针赋值。例如: 如果要将pvoid赋给其它类型指针,则需要强制类型转换如:pint= 阅读全文
posted @ 2017-07-26 17:15 阿玛尼迪迪 阅读(582) 评论(0) 推荐(1)
摘要:我们知道,在C++中,若一个变量声明为const类型,则试图修改该变量的值的操作都被视编译错误。例如, const char blank=' '; blank='\n'; //错误 面向对象程序设计中,为了体现封装性,通常不允许直接修改类对象的数据成员。若要修改类对象,应调用公有成员函数来完成。为了 阅读全文
posted @ 2017-07-25 22:00 阿玛尼迪迪 阅读(270) 评论(0) 推荐(0)