c++学习笔记之类和对象(二、构造函数和析构函数)

1、构造函数(Constructor):在C++中,有一种特殊的成员函数,它的名字和类名相同,没有返回值,不需要用户显式调用(用户也不能调用),而是在创建对象时自动执行。

    这种特殊的成员函数就是构造函数(Constructor)构造函数是特殊的成员函数,构造函数是为了保证对象的每个数据成员都被正确初始化。

   构造函数必须是 public 属性的,否则创建对象时无法调用。当然,设置为 private、protected 属性也不会报错,但是没有意义。

   构造函数没有返回值,因为没有变量来接收返回值,即使有也毫无用处,这意味着:

  • 不管是声明还是定义,函数名前面都不能出现返回值类型,即使是 void 也不允许;
  • 函数体中不能有 return 语句。

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