构造函数的初始化过程

    xiaoxiao2021-03-25  122

    //1.h 存放类的定义、类成员函数的原型等 #pragma once #include<iostream> #include<string> class man //创建类 { private: std::string name; //私有成员两个 int year; public: man(); //默认构造函数 man(const std::string a, int b = 0); //因为存在重载析构函数,因此不能提供2个默认参数 inline void update() //成员更新,使用内联函数 { name = "帅", year = 99; } void show(); //显示 ~man(); //析构函数,输出文字,表示析构函数确实运行了 }; //1.cpp main()函数,赋值,及调用类方法 #include<iostream> #include<string> #include"1.h" //调用包含类定义的头文件1.h int main() { using namespace std; man b; //使用默认构造函数 b.show(); //调用类方法,输出对象的值 { //用括号括起来的块,类对象只在块内存在 cout << "这里开始在块内" << endl; man a("wd",27); //使用自定义析构函数,并不使用默认参数 a.show(); man b("mmmm"); //使用自定义析构函数,并使用默认参数。另外,这里的b隐藏了块外的b b.show(); b.update(); //更新对象的数据 b.show(); } cout << "这里在块外了" << endl; system("pause"); return 0; } //2.cpp 存放类的函数定义 #include<iostream> #include"1.h" //因为是类的函数定义,因此要加上作用域解析运算符:: man::man() //默认构造函数,构造函数和析构函数的返回值都不加void { name = "\"NO NAME\""; //提供默认值 year = 0; } man::man(const std::string a, int b) //因为存在重载析构函数,因此不能提供2个默认参数 { name = a; if (b < 0) { std::cout << "人不可能小于0岁,因此,设置为0岁" << std::endl; b = 0; } else year = b; } void man::show() //显示 { using namespace std; cout << name << " is " << year << " years old." << endl; } man::~man() //析构函数,输出文字,表示析构函数确实运行了 { std::cout << name << " end." << std::endl; }
    转载请注明原文地址: https://ju.6miu.com/read-6709.html

    最新回复(0)