C与C++知识补遗

C与C++知识补遗

ID:39550327

大小:48.00 KB

页数:4页

时间:2019-07-06

C与C++知识补遗_第1页
C与C++知识补遗_第2页
C与C++知识补遗_第3页
C与C++知识补遗_第4页
资源描述:

《C与C++知识补遗》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、C/C++知识补遗栈空间的分配方式对普通的程序开发来讲是没有意义的,有系统来完成相关操作,但有时栈空间的分配方式又会显得很重要。栈的分配方式有两种,其一是从高地址空间向低地址空间分配,其二是从低地址空间向高地址空间分配。那么如何确定栈空间的分配方式呢,下述代码可以用来确定栈的分配方式。intfun(){staticint*pnt=0;if(pnt==0){intabc;pnt=&abc;fun();}else{intbcd;if(pnt>&bcd){printf("从高地址向低地址分配");//Wind

2、ows的分配方式}else{printf("从低地址向高地址分配");}}return0;}+成员指针的用法。指针可以算作C/C++的短刀利器了,指向类成员的指针包括指向类数据成员的指针和指向类方法(函数)的指针,下述代码演示了这两种指针的用法classAClass{public:AClass():m_name(0),m_age(0){};AClass(constchar*name);~AClass();public:voidSayHello();voidSayOkay();private:char*m

3、_name;intm_age;public:lv包包、古奇女包、coach包:www.naitiao.com

4、兔毛皮草、獭兔皮草、皮草服饰:www.shideke.comtypedefchar*AClass::*PACName;//引入新的类型(指向数据成员的指针)operatorPACName(){return&AClass::m_name;}//执行类型转换typedefintAClass::*PACAge;operatorPACAge(){return&AClass::m_age;}typedef

5、void(AClass::*Say)();//指向成员函数的指针};intfun(void){AClassa("AClass");AClass::Sayfunc=&AClass::SayHello();(a.*func)();//调用成员函数AClass*p=&a;func=&AClass::SayOkay;(p->*.func)();//调用成员函数printf("%st%d",a.*AClass::PACName(a),a.*AClass::PACAge(a));//数据成员指针的使用。PS:

6、是不是有些啰嗦?!}+对象在内存中的布局。了解对象在内存中的布局,可以很方便的通过数据成员找到包含该数据成员的对象的地址,续而执行更多的操作,这是C/C++的一个奇技淫巧。下面是示例代码structA{inta;doubleb;charc;}intfun(void){Ax;printf("%x,%x,%x,%x,%d",&x,&(x.a),&(x.b),&(x.c),sizeof(x));//运行结果:0x27AC48,0X27AC48,0X27AC50,0x27AC58,24(结构的大小是24而不

7、是13!请参考相关文档)//如果知道了x.a的地址,那么x的地址也就知道了。return0;}+lv包包、古奇女包、coach包:www.naitiao.com

8、兔毛皮草、獭兔皮草、皮草服饰:www.shideke.comnew和delete操作符重载。new和delete操作符会经常用到,但对这两个操作符进行重载的却很少,通过这两个操作符的重载,很容易实现把文件当内存来用。还可以通过这两个操作符的重载,来跟踪内存的使用情况,诸如,是否有内存泄露等。//完成内存使用的跟踪(通过重载全局new/delet

9、e操作符)void*operatornew(size_tsize,char*file,intline){//此处可以填写记录日志代码returnmalloc(size);}void*operatordelete(void*p){//此处可以填写记录日志代码free(p);}#defineNEW::new#defineDELETE::delete//接下来就需要使用NEW/DELETE替换掉new/delete了。将对象分配到指定的内存空间(主要用作对象的成员函数来使用)//重载全局new/delete操

10、作符void*operator(size_tsize,void*p){returnp;}void*delete(void*p){return;}//成员函数操作符classClassA{public:ClassA();public:void*operatornew(size_t,void*);voidoperatordelete(void*p)};void*ClassA::operatornew(size_tsize,void*p){ret

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。