首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

C++ primer 第四版 第 13.5.2节 第一个类的复制构造函数定义看不明白.解决方法

2012-02-19 
C++ primer 第四版 第 13.5.2节 第一个类的复制构造函数定义看不明白.classHasPtr{public:HasPtr(constint

C++ primer 第四版 第 13.5.2节 第一个类的复制构造函数定义看不明白.
class   HasPtr{
public:
        HasPtr   (const   int   &p,   int   i):   ptr(new   int(p)),   val(i)   {}
        HasPtr   (const   HasPtr   &orig):   ptr(new   int   (*orig.ptr)),   val(orig.val)   {}
private:
        int   *ptr;
        int   val;
};

这个是定义值型类.
复制构造函数   初始化   ptr   :       ptr(new   int   (*orig.ptr))   ,这里不是很明白.
ptr   是个指针,   而   *orig.ptr   是   HasPtr的对象   orig的   ptr指针所指向的值,   这样初始话编译可以通过.
希望好心人给详细讲解下吧.

[解决办法]
ptr(new int(p)) --> ptr = new int(p); // 动态分配一个int类型并初始化为p,再把指针赋给ptr
ptr(new int(*orig.ptr)) --> ptr = new int(*(orig.ptr)); // 动态分配一个int类型,用orig.ptr指针所指的值来初始化,再把动态分配的指针赋给ptr

热点排行