系列文章目录
重新复习c++,所以把书中的重点内容整理成博客,尽量简洁,易懂。
C++ 类与对象_类和对象的定义与访问 (定义类和对象,访问对象成员,this指针)
前言
当一个变量的生存期结束时,系统会自动回收这个存储单元,当建立一个用户定义的类类型对象时,也需要类似的工作,类体系结构复杂,建立对象的初始化工作和释放工作变化很大,需要用户自定义构造函数和析构函数。
构造函数和析构函数应该定义在公有部分,因为对象必须在类外创建和撤销。
一、带参数/不带参数的构造函数
构造函数名与类名相同,可以有任意类型的参数,不能有返回类型,建立类对象时自动调用。
析构函数在类名前加一个“~”,析构函数没有参数,没有返回类型,在类对象作用于结束时自动调用。
一段代码辅助理解:
#include<iostream>
using namespace std;
class Date {
public:
Date(int, int, int);
~Date();
void SetDate(int, int, int);
void print();
private:
int year, month, day;
};
Date::Date(int x, int y, int z)
{
year = x;
month = y;
day = z;
cout << "begin!" << endl;
}
Date::~Date()
{
cout << year << " " << month << " " << day << endl;
cout << "complete"<<endl;
}
void Date::SetDate(int a,int b,int c)
{
year = a;
month = b;
day = c;
}
void Date::print()
{
cout<< year << " " << month << " " << day << endl;
}
int main()
{
Date d1(1999, 7, 13);
Date d2(2003, 8, 15);
d1.SetDate(2020, 7, 13);
d1.print();
d2.print();
}
输出结果为:

从结果可以看到,对象的构造次序和析构次序是相反的,先创建的最后析构。
二、重载构造函数
构造函数和普通函数一样,允许重载。含有多个构造函数时,将根据参数匹配调用其中一个。
class Date {
public:
Date(int

本文介绍了C++中类的构造函数和析构函数,包括带参数和不带参数的构造函数,重载构造函数以及复制构造函数的概念和使用场景。通过实例展示了复制构造函数在数据初始化、传值参数和函数返回值中的应用,并讨论了浅复制和深复制的区别,强调了自定义复制构造函数的重要性。
最低0.47元/天 解锁文章
6714

被折叠的 条评论
为什么被折叠?



