本文主要是介绍学习经验一点点。。。,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
splice与merge最大的不同时,不用排序,也不要求原始链表有序。相同点是,被合并的链表或元素将消失。基类中若是有纯虚函数 即基类是抽象类 子类继承父类之后 必须实现父类中的纯虚函数
虚基类不能实例化 但是能声明指针啊。。。。
父类中若是也含所有虚函数 可不用在子类中实现 但必须父类中实现。
因为被实例化的类必须要实现他的虚函数(实例化类的虚函数必须有定义,原因如下:有虚函数作为成员函数的类, 它的实例化-对象, 在运行过程分配到的内存不止是它的成员数据, 还有一个指向该类虚函数表(vtable)的指针, 虚函数表中的每个数据项都是一个虚函数的入口地址; 如果一个对象的虚函数只有声明而没有实现, 就会出现这个虚函数表找不到本应作为其数据项之一的某函数的入口地址, 虚函数表在运行前不能装载完成, 所以产生连接错误!)。
若不实例化可以不实现他的虚函数。
若是在子类中再次定义就会覆盖父类的对应的虚函数。。
若在子类中实现的时候只是用了虚函数名函数参数不一致 若不加virtual 父类的虚函数在子类就不会提示成虚函数了(不是斜体了) 会导致父类的对应的虚函数被隐藏,子类调用不了父类的对应的虚函数了。。。。
8进制转化为10进制的方法
十进制 = 八进制/10*8 + 八进制%10;
16位进制转化为10 进制的方法
十进制 = 16进制/10*16 + 16进制%10;
机器字长的局限性
unsigned int a = 0;
unsigned int b = ~0;
unsigned int b =0xffff是不对的。机器字长不确定
mutex互斥锁用于进程间 临界区 用于线程间
volatile 会被意外的进程改变的变量 每次编译器都要重新读取 阻止编译器对其进行优化。常用在三种情况下
1并行设备的硬件寄存器
2多线程任务中被共享的变量
3中断服务子程序中会访问到的非自动变量
vector的begin()指针指向第一个数字end()指针指向最后一个数字的后一位从后开始要记得.end()-1 到>=begin()或者> begin()
swap()交换两个vector的内容
反向迭代器 reverse_iter 从rbegin开始 到rend结束
常迭代器值能读取数据
t_list1.insert(t_list1.begin(),array+5,array+10);半开半闭区间
t_iter2 = t_list4.begin();
t_iter2++;
t_iter2++;
t_list3.splice(t_list3.begin(),t_list4,t_list4.begin(),t_iter2);
从4中的开始到第二个数据剪切到3中
t_list3.merge(t_list4);把4的整个数据都剪切到3中 4中数据没了
由于位域不允许跨两个字节,因此位域的长度不能大于一个字节的长度,也就是说不能超过8位二进位。
1.位段成员必须为整型数据,包括有符号数和无符号数;位段的长度为大于等于零的整数常量。
2.位段长度为零的主要目的是使得下一成员从下一存储单元开始存放,本单元没有用完的单元空闲。
3.可以定义匿名字段,此位段仅仅用于占位,而不是使用。其主要的目的是为了满足将来系统升级或扩充的需要。
指针直接操作内存多发生在如下几种情况
某I/O芯片被定位在CPU的存储空间而非I/O空间,而且寄存器对应于某特定地址;
两个CPU之间以双端口RAM通信,CPU需要在双端口RAM的特定单元(称为mail box)书写内容以在对方CPU产生中断;
读取在ROM或FLASH的特定单元所烧录的汉字和英文字模。
/* 定义一个无参数、无返回类型的 */
typedef void (*lpFunction) ( );
/* 函数指针类型 */
/*定义一个函数指针,指向*/
lpFunction lpReset = (lpFunction)0xF000FFF0;
/* CPU启动后所执行第一条指令的位置 */
lpReset(); /* 调用函数 */
这篇关于学习经验一点点。。。的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!