zoukankan      html  css  js  c++  java
  • 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;
    } 

     

  • 相关阅读:
    iOS 面试题 1
    ios 面试题 0
    得到程序包路径
    UISwitch 监听响应
    在[self addsubView:xxx]中,self.name 和 _name的区别
    /调整button的title的位置
    //设置导航条背景图片
    警告框
    @synthesize
    打开控制台选中路径的文件夹
  • 原文地址:https://www.cnblogs.com/chaoyingLi/p/11156867.html
Copyright © 2011-2022 走看看