摘要: C++继承可以是单一继承或多重继承,每一个继承连接可以是public,protected,private也可以是virtual或non-virtual。然后是各个成员函数选项可以是virtual或non-virtual或pure virtual。本文仅仅作出一些关键点的验证。 public继承,例如下:1 class base2 {...}3 class derived:public base4 {...} 如果这样写,编译器会理解成类型为derived的对象同时也是类型为base的对象,但类型为base的对象不是类型为derived的对象。这点很重要。那么函数形参为base类型适用于... 阅读全文
posted @ 2013-05-16 18:05 herizai 阅读(164) 评论(0) 推荐(0) 编辑
摘要: 位域(Bit-fields)分析 位域是c++和c里面都有的一个概念,但是位域有一点要注意的有很多问题我们一样样的看:一、大端和小端字节序实际就是起始点该怎么确定。先看一个程序: 1: union { 2: struct 3: { 4: unsigned char a1:2; 5: unsigned char a2:3; 6: unsigned char a3:3; 7: }x; 8: unsigned char b; 9: }d; 10: 11: int... 阅读全文
posted @ 2013-05-16 18:02 herizai 阅读(195) 评论(0) 推荐(0) 编辑
摘要: 1、vs2010中的debug菜单中常用命令ContinueF5开始调试Stop DebugingShift+F5停止调试Toggle BreakpointF9设置断点Step OverF10单步(不进入函数)Step InfoF11单步(进入函数)Step OutShift+F11跳出函数Delete All BreakpointsCtrl+shift+F9删除所有断点2、设置断点在程序编辑窗口的左侧灰色区域点击对应的语句位置就可以设置一个断点或都按F9。3、按F5开始执行调试,程序会在设置的断点处停止。4、按F10或F11可进行单步测试。 阅读全文
posted @ 2013-05-16 17:52 herizai 阅读(746) 评论(0) 推荐(0) 编辑
摘要: malloc和free(及其变体)会产生问题的原因在于它们太简单:他们不知道构造函数和析构函数。假设用两种方法给一个包含10个string对象的数组分配空间,一个用malloc,另一个用new: string *stringarray1 =static_cast<string*>(malloc(10 * sizeof(string)));string *stringarray2 = new string[10];其结果是,stringarray1确实指向的是可以容纳10个string对象的足够空间,但内存里并没有创建这些对象。而且,如果你不从这种晦涩的语法怪圈(详见条款m4和m8的 阅读全文
posted @ 2013-05-16 17:32 herizai 阅读(129) 评论(0) 推荐(0) 编辑
摘要: 百度贴吧测试部门实习生电话面试1.内存如何分配?答:内存分配方式有三种:(1)从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。例如全局变量,static变量。(2)在栈上创建。在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限。(3)从堆上分配,亦称动态内存分配。程序在运行的时候用malloc或new申请任意多少的内存,程序员自己负责在何时用free或delete释放内存。动态内存的生存期由我们决定,使用非常灵活,但问题也最多。参考:htt 阅读全文
posted @ 2013-05-16 17:29 herizai 阅读(268) 评论(0) 推荐(0) 编辑
摘要: malloc和free(及其变体)会产生问题的原因在于它们太简单:他们不知道构造函数和析构函数。假设用两种方法给一个包含10个string对象的数组分配空间,一个用malloc,另一个用new: string *stringarray1 =static_cast<string*>(malloc(10 * sizeof(string)));string *stringarray2 = new string[10];其结果是,stringarray1确实指向的是可以容纳10个string对象的足够空间,但内存里并没有创建这些对象。而且,如果你不从这种晦涩的语法怪圈(详见条款m4和m8的 阅读全文
posted @ 2013-05-16 17:27 herizai 阅读(285) 评论(0) 推荐(0) 编辑
摘要: 先看一下代码:char *t=NULL;char * strcopy(const char * p,const char m){ int i,j; char q[40]={"123456789"};-------------------------------1. char *q=malloc(40);--------------------------------2.static char q[40]="123456789";----------------------3. for(i=m-1,j=0;p[i]!='/0';i++,j+ 阅读全文
posted @ 2013-05-16 17:25 herizai 阅读(214) 评论(0) 推荐(0) 编辑
摘要: #include<iostream>class Boat;//需要声明,因友元用到class Car{ int size;public: void setSize(int j){size=j;} int getSize(){return size;} friend int leisure(int time,Car& aobj,Boat&bobj);//};class Boat{ int size;public: void setSize(int j){size=j;} int getSize(){return size;} friend int leisure(in 阅读全文
posted @ 2013-05-16 17:12 herizai 阅读(137) 评论(0) 推荐(0) 编辑
摘要: C++操作符的优先级操作符及其结合性功能用法LLL::::::全局作用域类作用域名字空间作用域::nameclass::namenamespace::nameLLLLL.->[]()()成员选择成员选择下标函数调用类型构造object.memberpointer->membervariable[expr]name(expr_list)type(expr_list)RRRRR++--typeidtypeid显示强制类型转换后自增操作后自减操作类型ID运行时类型ID类型转换lvalue++lvalue--typeid(type)typeid(expr)cast_name<type 阅读全文
posted @ 2013-05-16 16:56 herizai 阅读(164) 评论(0) 推荐(0) 编辑
摘要: 简单,用类名实例化一个对象,即可作为参数进行传递!定义一个类class A;实例化类对象A a;定义 函数 int f(A x){};函数调用void main(){ f(a);//a为参数}一个函数(包括普通函数和成员函数)可以被多个类声明为“朋友”,可以引用多个类中的私有数据. 一个函数相当于一个接口,跟所定义的类无关,类中中只是使用它而已,如果不是main函数中定义的函数所有地方都可以使用,给它定义为友元只不过是为了这个函数能使用当前类的私有成员//=====================================// EX0807.cpp// 友元改成普通函数//===... 阅读全文
posted @ 2013-05-16 13:34 herizai 阅读(230) 评论(0) 推荐(0) 编辑
摘要: 1 * 栈基本操作 2 * 08/25/2010 3 * 参考自严蔚敏等《数据结构(C语言版)》清华大学出版社 4 */ 5 #include 6 #include 7 #include 8 using namespace std; 9 10 // constant definition 11 static const int S... 阅读全文
posted @ 2013-05-16 11:19 herizai 阅读(207) 评论(0) 推荐(0) 编辑
摘要: stdlib.h:stdlib.h里面定义了五种类型、一些宏和通用工具函数。 类型例如size_t、wchar_t、div_t、ldiv_t和lldiv_t; 宏例如EXIT_FAILURE、EXIT_SUCCESS、RAND_MAX和MB_CUR_MAX等等; 常用的函数如malloc()、calloc()、realloc()、free()、system()、atoi()、atol()、rand()、srand()、exit()等等。time.htime.h是C/C++中的日期和时间头文件。得到从程序启动到此次函数调用时累计的毫秒数。NVIDIA面试笔试题之一:assert.h是c标准库的一 阅读全文
posted @ 2013-05-16 11:18 herizai 阅读(215) 评论(0) 推荐(0) 编辑
摘要: setw控制符只对后面紧跟的起作用,而setfill控制符一旦设定,就会对后面一直起作用,直到你重新设置。 我给你举个例子,看下面这段程序: #include <iostream> using namespace std; #include <iomanip> int main() { cout<<setw(8)<<setfill('*')<<123<<endl; cout<<setw(8)<<456<<endl; return 0; } 输出结果是: *****123 阅读全文
posted @ 2013-05-16 10:53 herizai 阅读(1895) 评论(0) 推荐(0) 编辑