首页 > 代码库 > C++中的构造函数

C++中的构造函数

?构造函数

     –和类名相同
     –没有返回值类型
     –只在建立对象的时候被自动调用一次
     –调用构造函数的主要目的是初始化对象

?一个对象的创建过程:
     –分配内存空间
     –初始化成员变量,如果成员是对象,构造他
     –调用构造函数

?默认的空参构造函数

构造函数的使用

?构造函数重载
     –构造函数也是函数,拥有重载的特征
     –重载的构造函数在构造对象时根据参数自动选择

?利用参数默认值简化构造函数
     –构造函数也拥有函数参数默认值的特性
     –使用默认值可以减少构造函数的个数

?构造函数的初始化列表
     –初始化列表可以让构造函数在调用之前进行初始化工作
     –如果类的成员变量是const或引用类型,使用初始化列表是不二选择

?实践中,类的声明和定义是分开的
     –请试着将写的类分成头文件和实现两部分


//构造方法
#pragma  在做游戏的公司里面初始化的方法有两种风格  一种是init这是本来做苹果转过来的  另外一种是在构造方法里面初始化 (这本来就是做C++的)


#include <iostream>
using namespace std;

//类
class Time{
    //默认是私有的
    int hour;
    int min;
    int sec;
    
    //
    void dida(){
        sec++;
        if (60 == sec) {
            sec = 0;
            min++;
        }
        
        if (60 == min) {
            min = 0;
            hour++;
        }
        
        if (24 == hour) {
            hour = 0;
        }
    }
    
    //
    void show(){
        cout << hour << "时" << min << "分" << sec << "秒" << endl;
    }
    
    
public:
#pragma  构造方法: 没有返回值 ,方法名与类名相同。构造方法在创建对象的时候一定会被动的调用一次。如果我们自己没有写构造方法,编译器会帮我们写一个无参的构造方法
    Time (int h,int m,int s){
        cout << "Time ()构造方法执行了" << endl;
        //通常在构造方法里面去初始化成员变量
        hour = h;
        min = m;
        sec = s;
    }
    
    
    //公开的初始化方法
    void init(int h,int m,int s){
        hour = h;
        min = m;
        sec = s;
    }
    
    
    //
    void run(){
        while (1) {
            
            show();
            dida();
            //代表一个时间
            time_t cur = time(0);//0是获取当前系统的时间
            //注意理解
            while (cur == time(0)) {
                //死循环1秒钟
            }
        }
    }
  
};

//主函数
int main(int argc, const char * argv[])
{
    
    //创建对象  并把参数传进去给构造函数
    Time t(15,38,27);
    t.run();
    return 0;
}


运行结果如下:

Time ()构造方法执行了
15时38分27秒
15时38分28秒
15时38分29秒
15时38分30秒
15时38分31秒
15时38分32秒
15时38分33秒
15时38分34秒
15时38分35秒
15时38分36秒
15时38分37秒
15时38分38秒
15时38分39秒

Program ended with exit code: 9




C++中的构造函数