20140425 malloc和new不同 dynamic何时返回0
2024-10-07 18:57:09
1、malloc/free和new/delete区别
http://blog.csdn.net/hackbuteer1/article/details/6789164
相同点:都可用于申请动态内存和释放内存
不同点:
(1)操作对象有所不同。
malloc与free是C++/C 语言的标准库函数,new/delete 是C++的运算符。对于非内部数据类的对象而言,光用maloc/free 无法满足动态对象的要求。对象在创建的同时要自动执行构造函数, 对象消亡之前要自动执行析构函数。由于malloc/free 是库函数而不是运算符,不在编译器控制权限之内,不能够把执行构造函数和析构函数的任务强加malloc/free。
2、通过const_cast修改const变量的值
3、dynamic何时返回0
//A为父类;B,C都继承自A A a; A *pa=&a; dynamic_cast<B*>(pa); //pa指向A,不是指向B,dynamic_cast 返回0 B b; A *pa=&b; dynamic_cast<C*>(pa);//pa指向B,虽然C也是A的子类,但是pa不是指向C,返回0 B b; A *pa=&b;dynamic_cast<B*>(pa);//不返回0
例子:
#include<iostream>
using namespace std;
class A
{
public:
virtual void foo()
{
cout<<"A ->foo( ) is called"<<endl;
}
void foo1()
{
cout<<"A->fA( ) is called"<<endl;
}
}; class B: public A
{
public:
void foo()//虚函数
{
cout<<"B->foo( ) is called"<<endl;
}
void foo1()//重载
{
cout<<"B->fA is called"<<endl;
}
void functionB()
{
cout<<"B->functionB is called"<<endl;
}
}; void main()
{
A a;
A *pa=&a;
pa->foo();
pa->foo1();
(dynamic_cast<B *>(pa))->functionB();
//(dynamic_cast<B *>(pa))->foo();//foo()是虚函数,调用出错
(dynamic_cast<B*>(pa))->foo1();
(*pa).foo();
}
最新文章
- .NET 新标准介绍
- oracle 基础
- Java配置环境变量、方法和原因
- uva 11178 - Morley&#39;s Theorem
- nancy中的诊断功能面板1
- 关于HTML的Element
- UVaLive 7503 Change (坑题。。。。。。)
- Intellij idea 12和设置快捷键修改(加快项目的开发速度与养成良好习惯)
- Docker 生成Node.js web app(含端口映射)
- MapReduce 规划 六系列 MultipleOutputs采用
- PHP实例——输出安全的HTML代码
- Mac下Android studio搭建Android开发环境【新手】
- 计算机17-3,4作业C
- Swagger 配置
- PHP SOAP 发送XML
- centos7修改系统时间、时区
- Hello ThreadPoolExecutor
- 002-pro ant design 表单基本使用、state赋值数据父子传输
- ORA-06553: PLS-553: character set name is not recognized, while starting Content Store
- Servlet 监听器Listener详解
热门文章
- delphi 文件夹操作(监控)
- Machine Learning 之二,什么监督性学习,非监督性学习。
- Maven 打包jar清单
- 20140808 const和define区别 内联函数(inline) 栈和堆的地址分配 栈帧
- linux 服务器修改密码
- Dockerfile的实践2
- 监控数据库SqlServer
- Unity中动态绘制圆柱体
- JS对象 数组排序sort() sort()方法使数组中的元素按照一定的顺序排列。 语法: arrayObject.sort(方法函数)
- Codeforces 1140E DP