1、构造函数(Constructor):在C++中,有一种特殊的成员函数,它的名字和类名相同,没有返回值,不需要用户显式调用(用户也不能调用),而是在创建对象时自动执行。
这种特殊的成员函数就是构造函数(Constructor)构造函数是特殊的成员函数,构造函数是为了保证对象的每个数据成员都被正确初始化。
构造函数必须是 public 属性的,否则创建对象时无法调用。当然,设置为 private、protected 属性也不会报错,但是没有意义。
构造函数没有返回值,因为没有变量来接收返回值,即使有也毫无用处,这意味着:
2、析构函数:
创建对象时系统会自动调用构造函数进行初始化工作,同样,销毁对象时系统也会自动调用一个函数来进行清理工作,例如释放分配的内存、关闭打开的文件等,这个函数就是析构函数。
析构函数(Destructor)也是一种特殊的成员函数,没有返回值,不需要程序员显式调用(程序员也没法显式调用),而是在销毁对象时自动执行。构造函数的名字和类名相同,而析构函数的名字是在类名前面加一个~符号。
注意:析构函数没有参数,不能被重载,因此一个类只能有一个析构函数。如果用户没有定义,编译器会自动生成一个默认的析构函数。
3、一个时钟类:
Clock.h
#ifndef _CLOCK_H_ #define _CLOCK_H_ class Clock { public: Clock(int h,int m,int s); void display(); void Init(int hour, int minute, int second); ~Clock(); private: int hour_; int min_; int sec_; }; #endif // _CLOCK_H_
Clock.cpp
#include "Clock.h" #include<iostream> using namespace std; Clock::Clock(int h,int m,int s){ hour_ = h; min_ = m; sec_ = s; cout << "Init Time:" << hour_ << ":" << min_ << ":" << sec_ << endl; } void Clock::display() { cout << "Time:" << hour_ << ":" << min_ << ":" << sec_ << endl; } void Clock::Init(int hour, int minute, int second) { hour_ = hour; min_ = minute; sec_ = second; } Clock::~Clock() { cout << "Destroy.." << endl; }
调用主程序 main.cpp
#include"Clock.h" #include<iostream> //using namespace std; int main() { Clock c(0,0,0); c.Init(11, 43, 21); c.display(); char p; std::cout << "Press any key to Contine.." << std::endl; std::cin >> p; return 0; }
原文:https://www.cnblogs.com/chaoyingLi/p/11156867.html