
C++
文章平均质量分 77
vivi_wang_11
这个作者很懒,什么都没留下…
展开
-
malloc realloc calloc用法小结
三个函数的申明分别是:void* realloc(void* ptr, unsigned newsize);void* malloc(unsigned size);void* calloc(size_t nelem, size_t elsize);它们的返回值都是请求系统分配的地址,如果请求失败就返回NULLmalloc用于申请一段新的地址,参数size为需转载 2012-04-04 11:02:51 · 1247 阅读 · 2 评论 -
Placement New
首先我们区分下几个容易混淆的关键词:new、operator new、placement newnew和delete操作符我们应该都用过,它们是对堆中的内存进行申请和释放,而这两个都是不能被重载的。要实现不同的内存分配行为,需要重载operator new,而不是new和delete。 看如下代码:class MyClass {…};MyClass * p=转载 2012-05-09 11:14:37 · 510 阅读 · 0 评论 -
链表和数组的区别
链表和数组一样是一种数据结构。数组是将元素在内存中连续存放,由于每个元素占用内存相同,所以可以通过下标迅速访问数组中任何元素。但是如果要在数组中增加一个元素,需要移动大量元素,在内存中空出一个元素的空间,然后将要增加的元素放在其中。同样的道理,如果想删除一个元素,同样需要移动大量元素去填掉被移动的元素。链表恰好相反,链表中的元素在内存中不是顺序存储的,而是通过存转载 2012-05-08 22:33:48 · 1207 阅读 · 0 评论 -
call by value ;call by address/reference ;call by name;call by pointer
假设有一段code内容大致如下: ---------------------------------- MAIN() BEGIN A[1:4]={1,2,3,4}; X = 1; Y = 2; CALL SUB(X, Y, A[X]); END SUB(A, B, C) BEGIN A = B; C = 12; END转载 2012-05-09 09:48:30 · 969 阅读 · 0 评论 -
C程序内存分配
(1)代码区(text segment)用来存放程序的二进制代码。代码区指令根据程序设计流程依次执行,对于顺序指令,则只会执行一次(每个进程),如果反复,则需要使用跳转指令,如果进行递归,则需要借助栈来实现。代码区的指令中包括操作码和要操作的对象(或对象地址引用)。如果是立即数(即具体的数值,如5),将直接包含在代码中;如果是局部数据,将在栈区分配空间,然后引用该数据地址;如果是B转载 2012-05-03 09:41:44 · 559 阅读 · 0 评论 -
extern "C"
extern "C"包含双重含义,其一:被它修饰的目标是“extern”的;其二:被它修饰的目标是“C”的。1)被extern “C”限定的函数或变量是extern类型的; extern是C/C++语言中表明函数和全局变量作用范围(可见性)的关键字,该关键字告诉编译器,其声明的函数和变量可以在本模块或其他模块中使用。 注意:extern int a;转载 2012-05-02 21:20:16 · 522 阅读 · 0 评论 -
我是递归盲~~~
奈何~~我对递归完全没办法~各种不理解~~我决定把各种简单的复杂的递归题都放在这~~我就看就想就调试~我不信了,我还能被递归吓死!!!一.函数pow(x,y)实现运算x^y,即x的y次方,这里x和y都为整数。算法的基本思想是,减少乘法次数,重复利用结算结果,例如:x^4,如果逐个相乘的话,需要四次乘法。如果我们这样分解(x^2)*(x^2)就只需要2两次乘法,因为x^2的结果我们可转载 2012-04-06 20:15:24 · 1471 阅读 · 0 评论 -
运算符重载
实现函数运算符的实质:编写一个函数,该函数以“operator运算符号”为函数名,其定义了重载的运算符将要执行的操作。(给自己的类进行运算)运算符重载有两种形式:重载为类的成员函数 重载为类的友元函数(1)重载为类的成员函数: 双目运算符:一个参数(左操作数是访问该运算符对象本身的数据,由this指针给出,右操作数由参数给出)原创 2012-04-12 13:59:01 · 701 阅读 · 0 评论 -
类型转换函数
operator const char *() const:类型转换函数如果是重载*的话,那应该写成:const char operator * () const,而且即使是这样写那也不正确的,因为运算符重载中有几个运算符的返回值有约定,如operator * 在重载时通常返回值是classType&或者const classType& 。operator const char*()转载 2012-04-12 15:58:12 · 446 阅读 · 0 评论 -
继承-虚函数-作用域
来源:http://blog.youkuaiyun.com/gzshun在继承过程中,从基类派生出派生类,可能出现重名的成员,包括数据成员或成员函数,这些属于作用域方面的内容。一、基类的引用或指针访问派生类基类的引用或指针只能访问派生类中属于基类的部分成员,不能访问派生类的部分,否则就会编译出错。[cpp] view plaincopy转载 2012-04-10 09:53:09 · 910 阅读 · 0 评论 -
对虚函数的理解
情况一:B继承A,有同名函数,基类中的函数不为虚函数#include using namespace std;class A{public: A() { a = 1;b = 2; } ~A() {} void fun() { printf("%d %d\n",a,b); cout<<"A fun;"<<endl; } int a; int b;}原创 2012-04-10 14:04:25 · 490 阅读 · 0 评论 -
引用作为函数返回值
函数返回值时,要生成一个值的副本。而用引用返回值时,不生成值的副本。 例如,下面的程序是有关引用返回的4种形式: //********************* //** ch9_6.cpp ** //********************* #include float temp; float fn1(flo转载 2012-04-08 11:47:45 · 10421 阅读 · 0 评论 -
函数返回值的几种情况
在一个函数的内部,return的时候返回的都是一个拷贝,不管是变量、对象还是指针都是返回拷贝,但是这个拷贝是浅拷贝。 1. 如果返回一个基本类型的变量,比如:int a;a = 5;return a; 那么就会a的一个拷贝,即5返回,然后a就被销毁了。尽管a被销毁了,但它的副本5还是成功地返回了,所以这样做没有问题。转载 2012-04-08 21:00:19 · 5604 阅读 · 0 评论 -
析构函数设置成虚函数的原因
#include #include using namespace std;class A{ public : A() { cout ptr = new int[10]; } ~A() { delete ptr;转载 2012-04-06 15:33:54 · 2566 阅读 · 0 评论 -
类(空类/虚基类等)占内存的空间
一、真空类class CNull{};长度:1内存结构:??评注:长度其实为0,这个字节作为内容没有意义,可能每次都不一样。 二、空类class CNull2{public: CNull2(){printf("Construct/n");} ~CNul转载 2012-04-06 21:45:25 · 2315 阅读 · 0 评论 -
递归函数调用递归函数
题目如下:问下列代码的打印结果为0吗?[cpp] view plaincopy#include #include using namespace std; struct CLS { int m_i; CLS( int i ) : m_i(i){} CLS()转载 2012-04-06 20:39:27 · 830 阅读 · 0 评论 -
虚函数与虚指针
class A{public: virtual void method1(){ }private: int a; int b;};class B: public A{public: virtual void method2(){ }private: int c;};int main(){ A* a = new A(); B* b = new转载 2012-04-06 16:42:57 · 1005 阅读 · 0 评论 -
可重入函数
可重入函数主要用于多任务环境中,一个可重入的函数简单来说就是可以被中断的函数,也就是说,可以在这个函数执行的任何时刻中断它,转入OS调度下去执行另外一段代码,而返回控制时不会出现什么错误。不可重入的函数由于使用了一些系统资源,比如全局变量区,中断向量表等,所以它如果被中断的话,可能会出现问题,这类函数是不能运行在多任务环境下的。可重入函数是指一个可以被多个任务调用的过程,任务在调用时不必担转载 2012-04-05 19:00:23 · 473 阅读 · 0 评论 -
拷贝构造函数 深拷贝 浅拷贝
也许很多C++的初学者都知道什么是构造函数,但是对复制构造函数(copy constructor)却还很陌生。对于我来说,在写代码的时候能用得上复制构造函数的机会并不多,不过这并不说明复制构造函数没什么用,其实复制构造函数能解决一些我们常常会忽略的问题。 为了说明复制构造函数作用,我先说说我们在编程时会遇到的一些问题。对于C++中的函数,我们应该很熟悉了,因为平常经常使用;对于转载 2012-04-03 10:10:10 · 1637 阅读 · 0 评论