做家乡的网站,wordpress纯静态化,wordpress 数据库类型,在北京建网站#x1f40c;博主主页#xff1a;#x1f40c;倔强的大蜗牛#x1f40c; #x1f4da;专栏分类#xff1a;C❤️感谢大家点赞#x1f44d;收藏⭐评论✍️ 目录
一、类的6个默认成员函数 二、构造函数 1、概念
2、特性
三、析构函数
1、概念
2、特性 一、… 博主主页倔强的大蜗牛 专栏分类C❤️感谢大家点赞收藏⭐评论✍️ 目录
一、类的6个默认成员函数 二、构造函数 1、概念
2、特性
三、析构函数
1、概念
2、特性 一、类的6个默认成员函数 如果一个类中什么成员都没有简称为空类。 空类中真的什么都没有吗并不是任何类在什么都不写时编译器会自动生成以下6个默认成员 函数。 默认成员函数用户没有显式实现编译器会生成的成员函数称为默认成员函数。 class Date {}; 二、构造函数 1、概念 构造函数是一个特殊的成员函数名字与类名相同,创建类类型对象时由编译器自动调用以保证 每个数据成员都有 一个合适的初始值并且在对象整个生命周期内只调用一次。 2、特性 构造函数是特殊的成员函数需要注意的是构造函数虽然名称叫构造但是构造函数的主要任 务并不是开空间创建对象而是初始化对象。 特征
函数名与类名相同。 无返回值。 对象实例化时编译器自动调用对应的构造函数。 构造函数可以重载。 class Date{public:// 1.无参构造函数Date(){}// 2.带参构造函数Date(int year, int month, int day){_year year;_month month;_day day;}private:int _year;int _month;int _day;};void TestDate(){Date d1; // 调用无参构造函数Date d2(2015, 1, 1); // 调用带参的构造函数// 注意如果通过无参构造函数创建对象时对象后面不用跟括号否则就成了函数声明// 以下代码的函数声明了d3函数该函数无参返回一个日期类型的对象// warning C4930: “Date d3(void)”: 未调用原型函数(是否是有意用变量定义的?)Date d3();} 如果类中没有显式定义构造函数则C编译器会自动生成一个无参的默认构造函数一旦 用户显式定义编译器将不再生成。 class Date{public:/*// 如果用户显式定义了构造函数编译器将不再生成Date(int year, int month, int day){_year year;_month month;_day day;}*/void Print(){cout _year - _month - _day endl;}private:int _year;int _month;int _day;};int main(){// 将Date类中构造函数屏蔽后代码可以通过编译因为编译器生成了一个无参的默认构造函
数// 将Date类中构造函数放开代码编译失败因为一旦显式定义任何构造函数编译器将不再
生成// 无参构造函数放开后报错error C2512: “Date”: 没有合适的默认构造函数可用Date d1;return 0;} C把类型分成内置类型(基本类型)和自定义类型。 内置类型int、float、char 等 自定义类型class、struct、union等 class Time
{
public:Time(){cout Time() endl;_hour 0;_minute 0;_second 0;}
private:int _hour;int _minute;int _second;
};
class Date
{
private:// 基本类型(内置类型)int _year;int _month;int _day;// 自定义类型Time _t;
};
int main()
{Date d;return 0;
} 注意C11 中针对内置类型成员不初始化的缺陷又打了补丁即内置类型成员变量在 类中声明时可以给默认值。 class Time
{
public:Time(){cout Time() endl;_hour 0;_minute 0;
_second 0;}
private:int _hour;int _minute;int _second;
};
class Date
{
private:// 基本类型(内置类型)int _year 1970;int _month 1;int _day 1;// 自定义类型Time _t;
};
int main()
{Date d;return 0;
} 无参的构造函数和全缺省的构造函数都称为默认构造函数并且默认构造函数只能有一个。 注意无参构造函数、全缺省构造函数、我们没写编译器默认生成的构造函数都可以认为 是默认构造函数。 三、析构函数
1、概念 析构函数与构造函数功能相反析构函数不是完成对对象本身的销毁局部对象销毁工作是由 编译器完成的。而对象在销毁时会自动调用析构函数完成对象中资源的清理工作。 2、特性 析构函数是特殊的成员函数其特征如下 析构函数名是在类名前加上字符 ~无参数无返回值类型 一个类只能有一个析构函数。若未显式定义系统会自动生成默认的析构函数。注意析构 函数不能重载 对象生命周期结束时C编译系统系统自动调用析构函数编译器生成的默认析构函数对自定类型成员调用它的析构函数 如果类中没有申请资源时析构函数可以不写直接使用编译器生成的默认析构函数比如 Date类有资源申请时一定要写否则会造成资源泄漏比如Stack类 ❤️结语 本次精彩内容已圆满结束希望各位读者在阅读过程中能够收获满满。在此特别感谢各位读者的支持与三连赞。如果文章中存在任何问题或不足之处欢迎在评论区留言蜗牛必定会认真对待并加以改进以便为大家呈现更优质的文章。你们的支持与鼓励将是博主不断前进的最大动力。再次感谢大家的陪伴与支持