C++基础知识,运算符重载

h:
#ifndef TESTCLASS__H
#define TESTCLASS__H

class testClass
{
public:
int a;
int b;
int c;
char* p;
//无参构造函数
testClass();
//运算符重载
testClass& operator=(const testClass&);
//构造函数
testClass(int, int, int);
//析构函数
~testClass();
};

#endif // !TESTCLASS__H

cpp:
#include
#include “testClass.h”
testClass& testClass::operator=(const testClass& sourceObj)
{
this->a = sourceObj.a;
this->b = sourceObj.b;
this->c = sourceObj.c;
std::cout << “调用了赋值运算符重载” << std::endl;
return *this;
}

testClass::~testClass()
{
delete[] p;
std::cout << “调用了析构函数” << std::endl;
}

testClass::testClass(int a, int b, int c) :a(a), b(b), c©
{

}

testClass::testClass()
{
char* p = new char[100];
}

mian
:
#include
#include “testClass.h”
using namespace std;

int main()
{
testClass classA(1, 2, 3);
testClass classB{ 4,5,6 };
//报错,两个对象不能这样比较,需要重载运算符“==”
//if (classA == classB){}
//重载运算符本质上是一个"成员函数",是属于对象的,而非类的。这个函数的正式名字:operator关键字 接运算符
//既然本质上是一个函数,那么就有参数列表和返回参数
//有一些运算符,系统默认会生成一个运算符的重载,比如赋值运算符“=”
testClass classC = classA;//这是定义的时候初始化,不是赋值
testClass classD = { 7,8,9 };
classD = classC;

//2、拷贝赋值运算符
//testClass& operator=(const testClass&);
// 这个参数就是运算符右边的对象,给一个const是为了避免修改了右边的对象
//testClass& testClass::operator=(const testClass&)
//{
// std::cout << “调用了赋值运算符重载” << std::endl;
// return *this;
//}

//3、析构函数,~className,没有有参数,没有返回值,不能重载 (就是java里面的多态)
//析构函数干了两个事情,我们的写的函数体部分,函数体执行完之后系统进行销毁
//成员变量的初始化和销毁的时机
//初始化顺序:声明的顺序,先定义的变量先有值
//销毁顺序:先定义的后销毁
//应该是个栈,先进后出,就是个栈
//但是如果是自己声明的内存,如这个char* p = new char[100],就要显示delete[] p;

//new/delete对象,new的对象一定要自己释放
testClass* class1 = new testClass;//调用无参构造函数
testClass* class2 = new testClass();//调用无参构造函数
delete class1;//必须自己delete,然后程序才会调用析构函数,这是放到了堆里面
delete class2;

}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值