c++实例研究

从0开始

  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  104 随笔 :: 0 文章 :: 20 评论 :: 0 Trackbacks
1new 不但分配对象空间, 还会在分配后调用对象的构造器, 而 malloc 只是分配, 不构造:

class A {
public:
A(): m_value(
0)
{
}

public:
int m_value;
};

struct B {
A a;
};

*pb1 = new B;
*pb2 = (B *)malloc(sizeof(B));

pb1 因为被 
new 调用了构造函数, 所以 pb1->m_value == 0,
pb2 的构造函数没有被调用, 所以 pb2
->m_value 的值不确定(即未初始化).

2new 分配时要指定类型, 是类型安全的; 而 malloc 返回的是 void *, 类型不安全; 类型不安全的东西在 C++ 里是不被提倡的! 
posted on 2010-10-15 09:30 elprup 阅读(340) 评论(0)  编辑 收藏 引用 所属分类: c++面试题

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理