码迷,mamicode.com
首页 > 其他好文 > 详细

13.5. 管理指针成员的13.5.2. 定义值型类 方法

时间:2015-04-06 17:02:29      阅读:161      评论:0      收藏:0      [点我收藏+]

标签:

#include <iostream>
#include<string>
#include<set>
using namespace std;

//定义值类型

/*
复制构造函数不再复制指针,它将分配一个新的 int 对象,并初始化该对
象以保存与被复制对象相同的值。每个对象都保存属于自己的 int 值的不同副
本。因为每个对象保存自己的副本,所以析构函数将无条件删除指针。 
赋值操作符不需要分配新对象,它只是必须记得给其指针所指向的对象赋新
值,而不是给指针本身赋值
换句话说,改变的是指针所指向的值,而不是指针。即使要将一个对象赋值给它本身,
赋值操作符也必须总是保证
正确。本例中,即使左右操作数相同,操作本质上也是安全的,
因此,不需要显式检查自身赋值。
*/

class hasptr
{
public:
	hasptr(const int& p,int i):ptr(new int(p)),vi(i){}
	hasptr(const hasptr& org):ptr(new int(*org.ptr)),vi(org.vi){}
	hasptr& operator=(const hasptr&);
	~hasptr(){delete ptr;}

	int get_ptr_var()const{return *ptr;}
	int get_int()const{return vi;}

	void set_ptr(int *p){ptr=p;}
	void set_int(int i){vi=i;}

	int* get_ptr()const{return ptr;}
	void set_ptr_vi(int i)const{*ptr=i;}

private:
	int *ptr;
	int vi;
};

hasptr& hasptr::operator=(const hasptr& org)
{
	*ptr=*org.ptr;
	vi=org.vi;
	return *this;
}



int main()
{
	system("pause");
	return 1;
}

  

13.5. 管理指针成员的13.5.2. 定义值型类 方法

标签:

原文地址:http://www.cnblogs.com/yanliang12138/p/4396083.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!