
c++学习
winsunxu
逆水行舟,不进则退
展开
-
全面整理的C++面试题
1.是不是一个父类写了一个virtual 函数,如果子类覆盖它的函数不加virtual ,也能实现多态?virtual修饰符会被隐形继承的。private 也被集成,只事派生类没有访问权限而已virtual可加可不加子类的空间里有父类的所有变量(static除外)同一个函数只存在一个实体(inline除外)子类覆盖它的函数不加virtual ,也能实现多态。在子类的空间里,有父类的私有变量。私有变量不能直接访问。2.输入一个字符串,将其逆序后输出。(使用C++,不建议用伪码)#include using n转载 2011-03-01 20:06:00 · 775 阅读 · 0 评论 -
C++ Vector的用法
<br />(1)vector< 类型 > 标识符 ;<br />(2)vector< 类型 > 标识符(最大容量) ;<br />(3)vector< 类型 > 标识符(最大容量,初始所有值);<br />(4) int i[4] = {12,3,4,5};<br />vector< 类型 > vi(i , i+2); //得到i索引值为3以后的值 ; <br />5)vector< vector<int> > //vi 定义2维的容器;记得一定要有空格,不然会报错<br />vector< int >转载 2011-03-01 20:14:00 · 750 阅读 · 0 评论 -
vector C++ 详细用法
<br />vector是C++标准模板库中的部分内容,它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库。vector之所以被认为是一个容器,是因为它能够像容器一样存放各种类型的对象,简单地说,vector是一个能够存放任意类型的动态数组,能够增加和压缩数据。<br />为了可以使用vector,必须在你的头文件中包含下面的代码:<br /> #include <vector><br /> vector属于std命名域的,因此需要通过命名限定,如下完成你的代码:<br /> using s转载 2011-03-02 15:23:00 · 12693 阅读 · 0 评论 -
C++面试汇总
①链表反转<br />单向链表的反转是一个经常被问到的一个面试题,也是一个非常基础的问题。比如一个链表是这样的: 1->2->3->4->5 通过反转后成为5->4->3->2->1。struct linka { int data; linka* next; }; void reverse(linka* head) { if(head ==NULL) return; linka *pre, *cur, *ne; pre=head; cur=head->next; whi原创 2011-03-01 23:08:00 · 839 阅读 · 0 评论 -
C++调用约定和名字约定
<br />调用约定:<br />__cdecl __fastcall与 __stdcall,三者都是调用约定(Calling convention),它决定以下内容:1)函数参数的压栈顺序,2)由调用者还是被调用者把参数弹出栈,3)以及产生函数修饰名的方法。<br />1、__stdcall调用约定:函数的参数自右向左通过栈传递,被调用的函数在返回前清理传送参数的内存栈,<br />2、_cdecl是C和C++程序的缺省调用方式。每一个调用它的函数都包含清空堆栈的代码,所以产生的可执行文件大小会比调用_s转载 2011-03-03 11:48:00 · 580 阅读 · 0 评论 -
内存字节对齐
<br />为什么会有内存对齐<br /><br />以下内容节选自《Intel Architecture 32 Manual》。<br />字,双字,和四字在自然边界上不需要在内存中对齐。(对字,双字,和四字来说,自然边界分别是偶数地址,可以被4整除的地址,和可以被8整除的地址。)<br />无论如何,为了提高程序的性能,数据结构(尤其是栈)应该尽可能地在自然边界上对齐。原因在于,为了访问未对齐的内存,处理器需要作两次内存访问;然而,对齐的内存访问仅需要一次访问。<br />一个字或双字操作数跨越了4字节转载 2011-03-03 12:00:00 · 1044 阅读 · 0 评论 -
C++成员函数的HOOK
今天HOOK D3D9中的SetMaterial发现出现堆栈失衡现象,后来研究发现是因为,对于如下的调用:HRESULT _stdcall SetMaterial(D3DMATERIAL9 *pMaterial);D3DMATERIAL9 mtrl; ::ZeroMemory( &mtrl, sizeof(D3DMATERIAL9) ); mtrl.Diffuse.r = mtrl.Ambient.r = 1.0f; mtrl.Diffuse.g = mtrl.Ambient.g = 1.0f; m原创 2011-03-22 20:05:00 · 3869 阅读 · 0 评论 -
Visual Assist X 10.6.1830.0最有用的快捷键
ax最有用的几个快捷键:1、Alt + G: 在定义与声明之间互跳。2、Alt + O: 在.h与.cpp之间互跳。(O是字母O,不是数字零)3、Alt + Shift + Q:鼠标定位到函数名上,若是在h文件中,按此快捷键会弹出右键菜单,里面有个选项--创建定义;若是在cpp文件中,则按此快捷键会弹出右键菜单,里面有一个选项--创建声明。 这在定义好接口之后,再来写实现时,配合Alt转载 2011-12-09 17:36:04 · 2406 阅读 · 0 评论