C++
zyvscc
这个作者很懒,什么都没留下…
展开
-
引用
引用及其声明1.别名2.声明时初始化3.别名专享4.引用不占空间5.不能建立数组引用 “引用”作为函数参数有哪些特点1.与传指针效果相同,但不用给形参分配存储单元,可读性强2.与传一般变量和对象相比,不用给形参分配存储单元或调用拷贝构造函数 在什么时候需要使用“常引用”既要利用引用提高程序的效率,又要保护传递给函数的数据不在函数中被改变.常引用声转载 2012-04-30 10:00:33 · 328 阅读 · 0 评论 -
虚指针
C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模板技术,RTTI技术,虚函数技术,要么是试图做到在编译时决议,要么试图做到运行时决议。关于虚函数的使用方法,我在这里不做过多的转载 2012-05-26 13:30:42 · 5118 阅读 · 2 评论 -
sizeof
sizeof计算栈中分配的大小,不计算静态变量存放的全局数据区转载 2012-06-15 20:41:33 · 364 阅读 · 0 评论 -
小细节
在函数中,char str[] = "hello"; 分配一个局部数组 char *str = "hello"; 分配一个全局数组通过 static char str[] = "hello"; 可以开辟一段静态存储空间转载 2012-06-15 22:53:51 · 354 阅读 · 0 评论 -
虚函数的入口地址和普通函数有什么不同
每个虚函数都在vtable中占了一个表项,保存真一条跳到它的入口地址的指令(实际上就是保存了它的入口地址)。当一个包含虚函数的对象(注意,不是对象的指针)被创建的时候,它在头部附加了一个指针,指向vtable中相应的位置。调用虚函数的时候,不管你是用什么指针调用,它先根据vtable找到入口地址再执行,从而实现了“动态联编”。普通函数只是简单的跳到一个固定的地址。转载 2012-05-26 13:58:49 · 2121 阅读 · 0 评论 -
交换两个数
#define swap(a,b) a=a+b;b=a-b;a=a-b; 好像面试经常考,不涉及第三个数原创 2012-05-24 23:29:54 · 492 阅读 · 0 评论 -
面向对象
采用对象的观点设计和处理程序。当面对一个问题时,首先确定这个问题由几部分组成,而每一个部分其实就是一个对象。然后分别设计这些对象,最后得到整个程序。传统的程序设计多是基于功能的思想来进行考虑和设计的,而面向对象是基于对象的角度来考虑问题,更简洁清晰。转载 2012-05-20 15:47:02 · 571 阅读 · 0 评论 -
例1 编写一个函数getbits,实现从一个16位的单元中取出某几位
#include using namespace std;unsigned getbits(unsigned value, int n1, int n2);int main(){unsigned a;int n1, n2;printf("请输入一个八进制数a: ");scanf("%o",&a);printf("%d\n",a);printf原创 2012-05-20 15:30:26 · 9291 阅读 · 2 评论 -
关键字static的作用是什么
这个简单的问题很少有人能回答完全。在C语言中,关键字static有三个明显的作用: 1). 在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变。 2). 在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它函数访问。它是一个本地的全局变量。 3). 在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用。那就是,这个函数被转载 2012-05-07 12:21:05 · 665 阅读 · 0 评论 -
写一个函数,完成内存之间的拷贝。[考虑问题是否全面]
方法一:void* mymemcpy( void *dest, const void *src, size_t count ){ char* pdest = static_cast( dest ); const char* psrc = static_cast( src ); if( pdest>psrc && pdest/*这种情况的话(把内存区域想象成转载 2012-05-06 23:19:58 · 960 阅读 · 0 评论 -
虚函数
关于虚函数的背景知识用virtual关键字申明的函数叫做虚函数,虚函数肯定是类的成员函数。 存在虚函数的类都有一个一维的虚函数表叫做虚表。类的对象有一个指向虚表开始的虚指针。虚表是和类对应的,虚表指针是和对象对应的。 多态性是一个接口多种实现,是面向对象的核心。分为类的多态性和函数的多态性。 多态用虚函数来实现,结合动态绑定。 纯虚函数是虚函数再加上= 0。并且该函数只有声明,没有实现。转载 2012-05-07 10:13:37 · 320 阅读 · 0 评论 -
描述内存分配方式以及它们的区别?
1) 从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。例如全局变量,static 变量。2) 在栈上创建。在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集。3) 从堆上分配,亦称动态内存分配。程序在运行的时候用malloc 或new 申请任意多少的内存,程序员自己负责在转载 2012-05-03 23:06:33 · 4535 阅读 · 0 评论 -
哪几种情况只能用intialization list 而不能用assignment?
当类中含有const、reference成员变量;积累的构造函数都需要初始化表转载 2012-05-03 23:06:04 · 1225 阅读 · 0 评论 -
New delete 与malloc free 的联系与区别
都是在堆(heap)上进行动态的内存操作。用malloc函数需要指定内存分配的字节数并且不能初始化对象; new会自动调用对象的构造函数。free不会调用对象的destructor; delete会调用对象的destructor转载 2012-05-03 23:03:12 · 777 阅读 · 0 评论 -
多态的作用
1.隐藏实现细节,使得代码能够模块化;扩展代码模块,实现代码重用2.接口重用:在类的继承和派生的时候,保证使用家族中任一类的实例的某一属性时的正确调用。转载 2012-05-03 22:56:21 · 447 阅读 · 0 评论 -
苦逼的指针总结
函数指针: void (f*)();函数返回指针: void *f();const 指针 const int *;指向const 的指针 int * const;指向const 的const 指针 const int *const; float(**def)[10]; //def是一个二级指针,它指向的是一个一维数组的指针,数组的元素都是floatdoub转载 2012-06-16 10:26:30 · 540 阅读 · 0 评论