C++的类


创建C++的类主要有两个文件:.cpp和.h结尾的两个文件。   .h结尾的是头文件,对外公开的接口。c.pp是具体的实现。也就是说变量和函数的声明或者类的声明都写在.h头文件中。


?用class定义类
       成员默认为私有
?类中成员的作用域
      private
      protected
      public



以下是简单的创建一个模拟的Time时间类

头文件如下:
//
//  Time.h
//  ClassAndObject
//
//  Created by 06 on 15/1/19.
//  Copyright (c) 2015年 黄永锐. All rights reserved.
//

#ifndef __ClassAndObject__Time__
#define __ClassAndObject__Time__

#include <iostream>
using namespace std;

//类
class Time {
    //三个私有的成员变量 时分秒
    int hour;
    int min;
    int sec;
    
public:
    //构造方法的声明
    //.h文件可以给参数默认值,但是要注意 初始化列表和实现部分在cpp文件中
    Time (int h = 0,int m = 0,int s = 0);
    
    //运行
    void run();
    
private://私有
    void dida();
    void show();
};



#endif /* defined(__ClassAndObject__Time__) */


具体实现的.cpp文件如下:
//
//  Time.cpp
//  ClassAndObject
//
//  Created by 06 on 15/1/19.
//  Copyright (c) 2015年 黄永锐. All rights reserved.
//

#include "Time.h"

//注意在函数的实现部分参数不能出现默认值
//哪个类下的哪个方法            //初始化列表
Time::Time (int h,int m,int s):hour(h),min(m),sec(s){
    cout << " " << endl;
}



//这是一个全局函数  不是Time类下的一个方法  所以得不到成员变量
/*
void show(){
     cout << hour << "时" << min << "分" << sec << "秒" << endl;
}
 */


//哪个类下的哪个函数
void Time::show(){
    cout << hour << "时" << min << "分" << sec << "秒" << endl;
}


void Time::dida(){
    sec++;
    if (60 == sec) {
        sec = 0;
        min++;
    }
    
    if (60 == min) {
        min = 0;
        hour++;
    }
    
    if (24 == hour) {
        hour = 0;
    }

}

//运行
void Time::run(){
    while (1) {
        
        show();
        dida();
        //代表一个时间
        time_t cur = time(0);//0是获取当前系统的时间
        //注意理解
        while (cur == time(0)) {
            //死循环1秒钟
        }
    }

}

以上就是一个简单的类,然后需要在别的文件去创建该类对象的时候先导入头文件。

#include <iostream>
#include "Time.h"  //双引号导入的是自己写的类

using namespace std;

//主函数
int main(){
    //需要创建一个Time对象
    Time t(21,18,32);
    //t.show();//私有方法访问不到
    //t.dida();
    t.run();
    
    return 0;
}

运行结果如下:
21时18分32秒
21时18分33秒
21时18分34秒
21时18分35秒
21时18分36秒
Program ended with exit code: 9



郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。