C++语法学习笔记十一: 类内初始化、默认构造函数、=default

    技术2026-01-01  5

    实例代码:

    #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; }
    Processed: 0.010, SQL: 9