博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
20140425 malloc和new不同 dynamic何时返回0
阅读量:5276 次
发布时间:2019-06-14

本文共 1063 字,大约阅读时间需要 3 分钟。

1、malloc/free和new/delete区别

相同点:都可用于申请动态内存和释放内存

不同点

(1)操作对象有所不同
malloc与free是C++/C 语言的标准库函数,new/delete 是C++的运算符。对于非内部数据类的对象而言,光用maloc/free 无法满足动态对象的要求。对象在创建的同时要自动执行构造函数, 对象消亡之前要自动执行析构函数。由于malloc/free 是库函数而不是运算符,不在编译器控制权限之内,不能够把执行构造函数和析构函数的任务强加malloc/free。

2、通过const_cast修改const变量的值

3、dynamic何时返回0

//A为父类;B,C都继承自AA a; A *pa=&a;  dynamic_cast
(pa); //pa指向A,不是指向B,dynamic_cast 返回0B b; A *pa=&b; dynamic_cast
(pa);//pa指向B,虽然C也是A的子类,但是pa不是指向C,返回0B b; A *pa=&b;dynamic_cast
(pa);//不返回0
例子:
#include
using namespace std;class A{public: virtual void foo() { cout<<"A ->foo( ) is called"<
fA( ) is called"<
foo( ) is called"<
fA is called"<
functionB is called"<
foo(); pa->foo1(); (dynamic_cast
(pa))->functionB(); //(dynamic_cast(pa))->foo();//foo()是虚函数,调用出错 (dynamic_cast
(pa))->foo1(); (*pa).foo();}

转载于:https://www.cnblogs.com/yexuannan/p/3690237.html

你可能感兴趣的文章
poj3216 Prime Path(BFS)
查看>>
使用IntelliJ IDEA 2016创建maven管理的Java Web项目
查看>>
R语言 线性回归
查看>>
Ubuntu下用cue文件对ape和wav文件自动分轨
查看>>
会话控制
查看>>
推荐一款UI设计软件Balsamiq Mockups
查看>>
DRF的版本控制,认证,权限和频率限制
查看>>
Linux crontab 命令格式与详细例子
查看>>
百度地图Api进阶教程-地图鼠标左右键操作实例和鼠标样式6.html
查看>>
游标使用
查看>>
LLBL Gen Pro 设计器使用指南
查看>>
SetCapture() & ReleaseCapture() 捕获窗口外的【松开左键事件】: WM_LBUTTONUP
查看>>
PLSQL Developer使用技巧
查看>>
Android 设置界面的圆角选项
查看>>
百度地图api服务端根据经纬度得到地址
查看>>
使用yum更新时不升级Linux内核的方法
查看>>
sqlserver计算时间差DATEDIFF 函数
查看>>
51nod1307(暴力树剖/二分&dfs/并查集)
查看>>
用户体验分析: 以 “南通市图书馆微信公众号” 为例
查看>>
linux的管道 |和grep命令以及一些其他命令(diff,echo,cat,date,time,wc,which,whereis,gzip,zcat,unzip,sort)...
查看>>