Main Point
掌握构造函数的定义,特点和作用
掌握无参构造函数与带默认参数值的构造函数的定义与使用
掌握复制构造函数的定义与使用
掌握析构函数的定义与使用
构造函数 构造函数是类的一种特殊的成员函数。
特点:
无返回值,不用void
函数名与类名相同
构造函数可以有参数,可以发生重载
创建对象的时候,构造函数会自动调用,而且只调用一次
析构函数 创建类的对象时,系统会自动调用构造函数。同样,当对象生命结束时,需要释放所占的内存资源,程序将自动调用类的析构函数来完成。
特点:
进行清理操作
无返回值,不用void
函数名于类名名称前加~
析构函数无参,不能重载
对象在销毁前会自动调用析构函数,而且仅调用一次
构造函数和析构函数实例 #include <iostream> using namespace std;class CDate { int Date_Year, Date_Month, Date_Day; public : CDate (int , int , int ); void Display () ; };
#include "l3_07.h" CDate::CDate (int y, int m, int d) { cout << "Executing constructor..." ; Date_Year = y; Date_Month = m; Date_Day = d; } void CDate::Display () { cout << Date_Year << "-" << Date_Month << "-" << Date_Day << endl; }
#include "l3_07.h" #include <iostream> #include <string> using namespace std;int main () { CDate today (2025 , 2 , 5 ) ; cout << "today is...\n" ; today.Display (); today = CDate (2010 , 3 , 4 ); cout << "today is...\n" ; today.Display (); return 0 ; }
Executing constructor...today is... 2025-2-5 Executing constructor...today is... 2010-3-4
构造函数分类及调用 两种分类方式
三种分类方式
#include <iostream> #include <string> using namespace std;class Person { int age; public : Person () { cout << "无参构造函数。\n" ; } Person (int a) { age = a; cout << "有参构造函数。\n" ; } ~Person () { cout << "析构。\n" ; } Person (const Person& p) { age = p.age; cout << "拷贝构造函数。\n" ; } };
void task1 () { Person p1; Person p2 = Person (10 ); Person p3 = Person (p2); Person p4 = 10 ; } int main () { task1 (); return 0 ; }
无参构造函数。 有参构造函数。 拷贝构造函数。 有参构造函数。 析构。 析构。 析构。 析构。