实例代码:
#include <iostream>
#include <string>
#include <vector>
using namespace std;
class Time {
private:
void initMillTime(int mls) {
Millisecond = mls;
}
int Millisecond; //毫秒
public:
int Hour; //小时
int Minute;//分钟
//int Second;//秒钟
//int Second = 0;//秒钟 类内初始化
int Second = {0};//秒钟 类内初始化
mutable int testVal;
//const int ctestvalue = 80; //定义一个常量 并在这里初始化
const int ctestvalue;//定义一个常量 在内构造函数 初始化列表中初始化
//构造函数
Time(int temphour, int tmpmin, int tmpsec) :ctestvalue(80){
Hour = temphour;
Minute = tmpmin;
Second = tmpsec;
initMillTime(0);
cout << "调用了构造函数Time(int temphour, int tmpmin, int tmpsec)" << endl;
}
Time() :ctestvalue(80) {
Hour = 12;
Minute = 59;
Second = 59;
initMillTime(50);
cout << "调用了构造函数Time()" << endl;
}
void addHour(int tmphour) {
Hour += tmphour;
}
void addHour1(int tmphour) const{
//Hour += tmphour; //报错 这地方不能修改成员变量的值
}
void fixVal() const {
testVal = 10;
}
//把对象自己给返回回去了
Time& add_hour(int tmphour) {
Hour += tmphour;
return *this; //把对象自己给返回去了
}
static int s_val;
};
int Time::s_val = 10;
//类定义(类声明)
class Time2{ //定义一个时间类
public:
//explicit Time2(); //不带参数的构造函数:默认构造函数
Time2(int){};
Time2() = default; //编译器能够为这种 =default;的函数自动生成函数体
//Time2() = delete; //让编译器停止生成默认构造函数,让程序员显示创建构造函数
public:
int Hour;
int Minute;
int Second{ 0 };
};
//Time2::Time2(){
// Hour = 12;
//
//}
//
int main() {
//一:类相关非成员函数
//函数声明放到 类声明的头文件中,函数定义放到类定义的cpp文件中
//二:类内初始化
//在 C++ 11里, 我们可以为类成员变量提供一个初始值,那么我们在创建对象的时候,这个初始化值就用来初始化该成员变量。
//如 上面类中的 Second 成员变量
//三:const成员变量的初始化
//在定义const变量时 给定一个初值,或者在构造函数初始化列表中进行初始化,不可以通过赋值进行初始化
//四:默认构造函数: 没有参数的构造函数,我们就称为默认构造函数
Time2 myTime2;//生成对象时会调用类的构造函数,如果没有写,编译器会自动创建一个默认的构造函数(无参)
//称为“合成的默认构造函数”,这个“合成的默认构造函数”做了很有限的一些初始化
//一旦我们自己写了一个构造函数,编译器就不会再为我们创建“合成的默认构造函数”
//五:=default, =delete
//C++ 11中引入的
//=default : 编译器能够为我们自动生成函数体,仅限于一些特殊的函数,并不是所有函数都可以
//= delete : 让编译器停止生成默认构造函数,仅限于一些特殊的函数, 逼着程序员显示创建构造函数
system("pause");
return 0;
}