c++类学习

一、类中的构造函数

在这里我们先简单插入一段c++代码块,下面是一个日期类对象

class Date
{
public:
	Date(int year=1, int month=1, int day=1)
	{
		_year = year;
		_month = month;
		_day = day;
	}

	void Print()
	{
		cout << _year << " " << _month << " " << _day << endl;
	}
private:
	int _year=1;
	int _month=1;
	int _day=1;
};

int main()
{
	Date d1;
	Date d2(2023, 1, 1);
	d1.Print();
	d2.Print();
	return 0;

在写c语言时,通常会写init函数进行初始化,在c++中,构造函数有如下特点:

1.构造函数功能跟init函数一样,起到初始化的作用
2.函数名和类名相同
3.没有返回值
4.对象实例化时,自动调用(最重要的)
5.一个类可以有多个构造函数
6.构造函数不创造对象,有多种初始化方式
7.全缺省和无参构造函数只能留一个

二、析构函数

析构函数特点如下:
1.析构函数完成清理资源
2.在类名前加~
3.无参数返回值类型
4.只有一个析构函数,所以析构函数不能重载,若未定义系统会自动生成析构函数
5.对象生命结束是会自动调用

下面是一段有关栈的类的使用

class Stack
{                                 
public:
	Stack()
	{
		_a = NULL;
		_size = _capacity = 0;
	}

	Stack(int n)
	{
		_a = (int*)malloc(sizeof(int) * n);
		if (nullptr == _a)
		{
			printf("malloc失败");
			return;
		}
		_capacity = n;
		_size = 0;
	}

	void Push(int x)
	{
		_a[_size++] = x;
	}

	~Stack()
	{
		free(_a);
		_a = nullptr;
		_size = _capacity = 0;
	}
private:
	//成员变量
	int* _a;
	int _size;
	int _capacity;
}
void Push(int x)
{
	_a[size++] = x;
}
int main()
{
	Stack st(4);
	st.Push(1);
	return 0;
}

可以看到~Stack()析构函数的使用

三.运算符重载

首先需要知道运算符重载的作用那就是:使自定义类型对象可以使用运算符。
其中涉及operaor关键字

class Date
{
public:
	Date(int year = 1, int month = 1, int day = 1)
	{
		_year = year;
		_month = month;
		_day = day;
	}
	bool operator==(const Date& d2)
	{
		return _year == d2._year;//隐藏
	}//可以看到形参比操作数少一个
private:
	int _year;
	int _month;
	int _day;
};
int main()
{
	Date d1(2000, 1, 1);
	Date d2(2001, 1, 1);
	operator==(d1, d2);
	d1 == d2;//转换成去调用operator函数
	d1.operator==(d2);
	cout << (d1 == d2) << endl;//<<
	//d1 < d2;//自定义类型不能直接使用这些运算符
	return 0;
}

重载运算符的函数名一般由 “operator” 关键字后跟运算符号来命名,如上面的==运算符重载,其中
重载的操作符必须有一个类类型的参数
作为类成员函数重载时,其形参看起来要比操作数数目少一个,因为成员函数的第一个参数为隐藏的this,那么就可以直接看作在类中使用私用变量来使用,减去或加上传入的那个参数

总结

本次简单总结一下类中的运算符重载,构造函数,析构函数。

  • 14
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C++的stringC++标准库中提供的一个用于处理字符串的。它提供了一系列成员函数和操作符重载,使得字符串的操作更加方便和高效。 string的特点包括: 1. 动态内存管理:string会自动管理字符串的内存,无需手动分配和释放内存。 2. 可变性:string对象可以随时修改其内容,包括插入、删除、替换等操作。 3. 字符串操作:string提供了丰富的字符串操作函数,如查找、比较、连接、截取等。 以下是一些常用的string成员函数和操作符重载: 1. 构造函数:可以使用不同的方式创建string对象,如默认构造函数、拷贝构造函数、从C风格字符串构造等。 2. 赋值操作:可以使用赋值运算符=将一个string对象赋值给另一个对象。 3. 连接操作:可以使用+运算符将两个string对象连接起来。 4. 访问字符:可以使用下标运算符[]或at()函数来访问字符串中的单个字符。 5. 获取长度:可以使用length()或size()函数获取字符串的长度。 6. 查找子串:可以使用find()函数在字符串中查找指定的子串。 7. 插入和删除:可以使用insert()函数在指定位置插入字符或子串,使用erase()函数删除指定位置的字符或子串。 8. 截取子串:可以使用substr()函数截取指定位置和长度的子串。 9. 比较字符串:可以使用比较运算符==、!=、<、>等来比较两个字符串的大小。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值