成都网站建设设计

将想法与焦点和您一起共享

C++Primer13.1.2节练习-创新互联

练习13.6:

五峰网站建设公司创新互联公司,五峰网站设计制作,有大型网站制作公司丰富经验。已为五峰成百上千提供企业网站建设服务。企业网站搭建\成都外贸网站建设要多少钱,请找那个售后服务好的五峰做网站的公司定做!

拷贝赋值运算符是类的重载运算符,是类的成员函数,接受一个与其所在类相同类型的参数,返回一个指向其左侧运算对象的引用。

当我们对对象进行拷贝赋值时,会用到拷贝赋值运算符。

对于某些类,合成的拷贝赋值运算用来禁止该类型对象的赋值。如果拷贝赋值运算符并非出于此目的,它会将右侧运算对象的每一个非static成员赋予左侧运算对象的对应成员,这一工作是通过成员类型的拷贝赋值运算符来完成的。

如果一个类未定义自己的拷贝赋值运算符,编译器会为它生成一个合成拷贝赋值运算符。

练习13.7:

StrBlob类和StrBlobPtr类没有定义拷贝赋值运算符,编译器会为这两个类定义合成拷贝赋值运算符。

对于StrBlob类的拷贝赋值,使用智能指针shared_ptr的拷贝赋值运算符来对其成员data进行拷贝赋值,对应内存的引用计数加1

对于StrBlobPtr类的拷贝赋值,使用weak_ptr的拷贝赋值运算符来对其成员wptr进行拷贝赋值,引用计数不变,curr是内置数据类型size_t,直接赋值

练习13.8:

#include#includeusing namespace std;

class HasPtr
{
public:
	HasPtr(const std::string& s = std::string()):
		ps(new std::string(s)),i(0) { }
	//拷贝构造函数
	HasPtr(const HasPtr& hp): ps(new std::string(*hp.ps)),i(hp.i) { }
	//拷贝赋值运算符
	HasPtr& operator=(const HasPtr&);

private:
	std::string* ps;
	int i;
};

HasPtr& HasPtr::operator=(const HasPtr& ptr)
{
	delete ps;
	ps = new string(*ptr.ps);
	i = ptr.i;
	return *this;
}

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


新闻标题:C++Primer13.1.2节练习-创新互联
转载来于:http://chengdu.cdxwcx.cn/article/dssgdh.html