C++ 操作符赋值重载
来源:互联网 发布:apache for mac 安装 编辑:程序博客网 时间:2024/05/23 19:20
今天学习了一下操作符重载,着重理解了一下赋值= 操作符
赋值操作符重载成成员函数的格式如下:
对于类A
class A{
};
const A & operator = (const A &x);
使用方法:
A a;
A b;
a=b;
或者a.operator(b);
在这里:
传递过来一个引用类型的变量,是为了防止对象直接的浅拷贝;
前面加一个const 是为了防止通过x来修改其中的成员变量值,保证数据安全。
在这里特别要说一下该函数的返回类型 const A &;
该返回值 代表了表达式a=b的值;同样加const 是为了通过表达式来修改对象中的成员变量的值。这里返回一个引用类型的对象,最大的好处是,可以进行连赋值操作,例如:
A a;
A b;
A c;
a=b=c;
即可进行这种操作;
最后 ,给一个完整的示例验证一下:
Vector.h文件
class Vector
{
int *rep;
int size;
public:
Vector(int s,int an_array[]);
~Vector();
const Vector &operator=(const Vector& x);// =重载
void print()const;
};
Vector.cpp文件
Vector::Vector(int s,int an_array[]):size(s),rep(newint[s])
{
for(int i = 0;i < size;i++)
rep[i] =an_array[i];
}
Vector::~Vector()
{
delete rep;
rep = NULL;
}
const Vector & Vector::operator=(constVector& x)
{
if(this != &x)
{
size =x.size;
delete [] rep;//释放成员指针的旧堆内存
rep =newint [size];//为指针成员开辟新内存空间(在堆上)
for(int i=0;i<size;i++)
rep[i] = x.rep[i];//向新内存拷贝内容。
}
return *this;
}
void Vector::print()const//输出成员变量的值
{
cout << size <<endl;
for(int i=0;i <size;i++)
{
cout << rep[i] <<" ";
}
cout<<endl;
}
#include <iostream>
#include "Vector.h"
using namespace std;
int main(int argc, const char * argv[])
{
int array1[5]={1,2,3,4,5};
int array2[10]={6,7,8,9,10,11,12,13,14,15};
Vector vec1(5,array1);
Vector vec2(10,array2);
vec1.print();
vec2.print();
vec1=vec2;//调用赋值重载运算符,进行对象间的赋值操作(深拷贝)
(vec1=vec2).print();//通过表达式来输出vec1中变量的值
vec1.print();
vec2.print();
return 0;
}
- C++_指针悬挂和赋值操作符的重载
- C++_指针悬挂和赋值操作符的重载
- C++_指针悬挂和赋值操作符的重载
- c++ 重载赋值操作符
- C++重载赋值操作符
- C++ 重载赋值操作符
- C++ 操作符赋值重载
- C++:赋值运算符重载
- 重载赋值运算符(c/c++)
- 赋值运算符和操作符重载
- 重载赋值操作符的分类
- C++基础知识--赋值操作符重载
- C++赋值操作符重载简介
- c++中赋值操作符的重载
- C++【操作符重载】
- c++::操作符重载
- C++:操作符重载
- 重载赋值运算符(c++)
- Linux 网卡驱动学习(三)(net_device 等数据结构)
- spring mvc +jdbctemplate 返回多表查询List<Bean>
- Debian 8.1 安装Broadcom BCM4312无线网卡驱动
- AM335x串口烧写uboot
- (面试题23)从上打印二叉树
- C++ 操作符赋值重载
- Android 使用了aidl时,进行混淆
- Android开发基础之菜单键的使用
- 最小二乘法曲线拟合+C代码
- Spring_00600_IOC_annotation_Components
- #142 (div.2) A. Dragons
- 黑马程序员——IO总结
- Shell 学习10 - Shell 注释
- PHP var_export 与 var_dump