C++学习基础六——复制构造函数和赋值操作符
#include <iostream>
#include <string>
using namespace std;
class Sales_item
{
public:
Sales_item()
{
this->number = ;
this->acount = 0.0;
} Sales_item(const string &isbnstr)
{
this->isbn = isbnstr;
this->number = ;
this->acount = 0.0;
} //复制构造函数:如果自己不写,C++会默认提供一个
//复制构造函数:只接收一个参数 ,参数的类型是当前类,并且是一个const的引用
//作用:是将形参的数据成员一一赋给当前的数据成员
Sales_item(const Sales_item& other)
{
isbn = other.isbn;
number = other.number;
acount = other.acount;
cout<<"复制构造函数被调用...."<<endl;
} //赋值操作符:如果自己不写,C++会默认提供一个
//返回值是本类的引用,接收一个参数,参数的类型是当前类,并且是一个const的引用
Sales_item& operator= (const Sales_item &other)
{
isbn = other.isbn;
number = other.number;
acount = other.acount;
cout<<"赋值操作符 被调用...."<<endl;
return *this;
} //一般情况下,C++会帮我们实现 复制构造函数和赋值操作符
//但是当一个类的数据成员有指针的时候,我们必须自己实现复制构造函数和赋值操作符
private:
string isbn;
int number;
double acount;
};
(2)主方法:
int main()
{
Sales_item a;
Sales_item b("0-12-djf-X");
Sales_item c(b); //调用复制构造函数
a = b; //调用赋值操作符
return ;
}
class NoName
{
public :
NoName()
{
sPtr = new string;
number = ;
}
~NoName()
{
delete sPtr;
}
//复制构造函数
NoName(const NoName& str)
{
sPtr = new string;
*sPtr = *(str.sPtr);//注意:进行的是指针所指向值的赋值,而不是指针的重新赋值
number = str.number;
} //赋值操作符
NoName& operator=(const NoName &rig)
{
sPtr = new string;
*sPtr = *(rig.sPtr);//注意:进行的是指针所指向值的赋值,而不是指针的重新赋值
number = rig.number;
return *this;
}
private:
string *sPtr;
int number;
};
6.总结复制构造函数和赋值操作符
复制构造函数:是指将构造函数的参数一一给本类的对象的赋值,对于指针而言,不是指针的赋值,而是指针所指向的数据的赋值。
具体代码如下:
class NoName{
private:
string *str;
int i;
double b;
};
NoName(const NoName &other)
{
str = new string;
10 *str = *(other.str);
i = other.i;
b = other.b;
}
赋值操作符: 函数声明
NoName& operator=(const NoName &rig);
NoName& operator=(const NoName &rig)
{//内容跟复制构造函数的一样
str = new string;
*str = *(rig.str);
i = rig.i;
b = rig.b; return *this;
}
C++学习基础六——复制构造函数和赋值操作符的更多相关文章
- C++在单继承、多继承、虚继承时,构造函数、复制构造函数、赋值操作符、析构函数的执行顺序和执行内容
一.本文目的与说明 1. 本文目的:理清在各种继承时,构造函数.复制构造函数.赋值操作符.析构函数的执行顺序和执行内容. 2. 说明:虽然复制构造函数属于构造函数的一种,有共同的地方,但是也具有一定的 ...
- C++11六大函数(构造函数,移动构造函数,移动赋值操作符,复制构造函数,赋值操作符,析构函数)
在C++中,有三大函数复制控制(复制构造函数,赋值操作符,析构函数),而在C++11中,加入了移动构造函数,移动赋值操作符.我就斗胆将他们命名为六大函数好了. 一.构造函数 c++primer中说过: ...
- C++中复制构造函数和赋值操作符
先看一个例子: 定义了一个类:
- [C++]复制构造函数、赋值操作符与隐式类类型转换
问题:现有类A定义如下: class A{public: A(int a) //构造函数 { ...
- C++复制构造函数和赋值符的区别
From http://blog.csdn.net/randyjiawenjie/article/details/6666937 非常感谢原作者分享. class CTest{public: CTe ...
- c++ 复制构造函数和赋值函数
c++ 自动提供了下面这些成员函数 1默认构造函数 2.复制构造函数 3.赋值操作符 4.默认析构函数 5.地址操作符 赋值构造函数copy construtor 用于将一个对象复制到新创建的对象中, ...
- [c++基础]3/5原则--拷贝构造函数+拷贝赋值操作符
/* * main.cpp * * Created on: Apr 7, 2016 * Author: lizhen */ #include <iostream> #include &qu ...
- 深入理解c++构造函数, 复制构造函数和赋值函数重载(operator=)
注 以下代码编译及运行环境均为 Xcode 6.4, LLVM 6.1 with GNU++11 support, Mac OS X 10.10.2 调用时机 看例子 // // main.cpp / ...
- C++复制控制:赋值操作符和析构函数
一.赋值操作符 类定义了该类型对象赋值时会发生什么.与拷贝构造函数一样,如果类没有定义自己的赋值操作符,编译器会合成一个. 1.重载操作符的简单介绍 重载操作符是一些函数,其名字为operator后跟 ...
随机推荐
- ASP.NET Cookie存值问题
想必 用Cookie存值已经是很普遍的了,我也是刚学习了一点皮毛,现在就记下一点知识,便于日后翻阅. 1.C#代码存取Cookie值 //用Request获取到客户端Cookie 判断是否为空 if ...
- 小议安卓定位伪造-实战足不出户畅玩Pokemon Go
本文旨在技术探讨故本文不提供工具,正常玩家请勿模仿,游戏中虚拟位置有封号风险 0x00 安卓定位方式归类 要伪造定位首先要摸清定位到底是如何实现的,首先从广义上来区分安卓的定位方式实际上就gps和ne ...
- 图片过大导致OOM
原文:http://www.codeceo.com/article/android-load-image-oom.html 一.分析 在加载图片过程中出现的OOM的几种情况: 1. 加载的图片过大 2 ...
- 一行代码从表中选取N行到另一个表
private void Form1_Load(object sender, EventArgs e) { DataTable dt = new DataTable(); ...
- C# 多线程同步和线程通信
多线程通信 1. 当线程之间有先后的依赖关系时,属于线程之间的通信问题.也就是后一个线程要等待别的一个或多个线程全部完成,才能开始下一步的工作.可以使用: WaitHandle Class WaitH ...
- Zookeeper源码编译为Eclipse工程(转)
原文地址:http://blog.csdn.net/jiyiqinlovexx/article/details/41179293 为了深入学习ZooKeeper源码,首先就想到将其导入到Eclispe ...
- source insight shift+tab问题
之前用的好好的,shift+tab功能为向左缩进(即tab的相反功能),但是突然就有问题了:现象为只是光标向左移动,但文本不动. 解决方法: 1 使用快捷键f9 2 重新定义快捷键,把shift+ta ...
- ipvsadm命令使用方法
由于LVS(IPVS)是工作在内核空间的,因此要在用户空间对其进行配置和管理就要用到ipvsadm,ipvsadm是LVS在用户空间的管理命令. 一般在安装linux(CentOS6.5)时该命令是为 ...
- 2015.12.21~2015.12.24真题回顾!-- HTML5学堂
2015.12.21~2015.12.24真题回顾!-- HTML5学堂 山不在高,有仙则名!水不在深,有龙则灵!千里冰封,非一日之寒!IT之路,须厚积薄发!一日一小练,功成不是梦!小小技巧,尽在HT ...
- JavaWeb用Jdbc操作MySql数据库(二)
一.仍然使用前面的环境和示例数据库. 二.建立发出注册请求的页面index3.jsp. <%@ page language="java" import="java. ...