【C++】类的默认成员函数(上),C++中类的默认成员函数详解(上)

马肤

温馨提示:这篇文章已超过413天没有更新,请注意相关的内容是否还可用!

摘要:本文介绍了C++中的类的默认成员函数,包括构造函数、析构函数、拷贝构造函数和赋值运算符等。这些默认成员函数在类中没有明确实现时,编译器会自动生成。了解这些默认成员函数的特性和作用,对于编写高效、安全的C++代码至关重要。本文旨在帮助读者掌握类的默认成员函数的用法和注意事项,以便更好地运用面向对象编程思想解决实际问题。

小羊失眠啦。

专栏系列:《C语言》、《数据结构》、《C++》、《Linux》、《Cpolar》。

【C++】类的默认成员函数(上),C++中类的默认成员函数详解(上) 第1张

感谢大家的点赞👍、收藏⭐、评论✍️。

文章目录:

默认成员函数

在上一章中,我们了解到如果一个类没有任何成员,那么这个类被称为空类,但实际上,一个类多少都会有一些默认成员函数,当我们定义好一个类,但不进行任何处理时,编译器会自动生成以下6个默认成员函数:

1、默认构造函数:如果用户没有手动实现,则编译器会自动生成的构造函数,主要完成初始化工作。

2、析构函数:主要完成清理工作,在对象的生命周期结束时自动调用。

3、拷贝构造函数:使用一个同类的对象来初始化创建一个新对象。

4、赋值重载:把一个对象赋值给另一个对象。

【C++】类的默认成员函数(上),C++中类的默认成员函数详解(上) 第2张

5、取地址重载:普通对象取地址操作

6、取地址重载(const):const对象取地址操作。

本章我们将学习四个默认成员函数——构造函数与析构函数、拷贝构造与赋值重载。

构造函数

在C语言阶段,实现栈的数据结构时,每创建一个stack对象后,首先得调用它的专属初始化函数StackInit来初始化对象,这未免有些麻烦,在C++中,构造函数为我们很好地解决了这一问题。

构造函数是一个特殊的成员函数,其主要作用不是开辟空间创建对象,而是初始化对象,构造函数的特性如下:

1、函数名与类名相同。

2、无返回值。

【C++】类的默认成员函数(上),C++中类的默认成员函数详解(上) 第3张

3、对象实例化时,编译器自动调用对应的构造函数。

4、构造函数可以重载。

举例:

class Date
{
public:
    //无参的构造函数
    Date() {}
    //带参的构造函数
    Date(int year, int month, int day) 
    {
        _year = year;
        _month = month;
        _day = day;
    }
private:
    int _year;
    int _month;
    int _day;
};

特别注意:

1、创建对象时,编译器会自动调用构造函数,若调用无参构造函数,则无需在对象后面使用(),否则会产生歧义,编译器无法确定你是在声明函数还是在创建对象,错误示例:Date d3();

2、如果类中没有显式定义构造函数,则C++编译器会自动生成一个无参的默认构造函数,一旦用户显式定义,编译器将不再生成,默认生成的构造函数对内置类型成员不作处理,但对自定义类型成员会调用它的默认构造函数,举例:如果有一个类包含自定义类型成员如其他类或结构体等,那么当这个类的对象被创建时,它的所有自定义类型成员都会被调用其默认构造函数进行初始化,举例中的默认构造函数对内置类型和自定义类型分别进行了说明,对于自定义类型成员的处理方式也进行了详细解释,同时给出了一个关于队列类的例子来说明默认构造函数的使用场景以及其对自定义类型成员的影响,此外还提到了栈类的构造函数和析构函数的实现以及它们的作用和调用时机等细节问题进行了讨论和解释通过示例代码展示了如何正确使用构造函数以及处理自定义类型成员等问题同时强调了构造函数的重要性和作用并指出了在使用构造函数时需要注意的问题例如避免歧义的产生等最后总结了构造函数的特性和作用为读者提供了更深入的理解和掌握构造函数的途径和方法论通过具体的代码示例和解释让读者更好地理解和掌握构造函数的用法和注意事项等同时提供了相关的代码示例和解析以帮助读者更好地理解和应用所学知识内容同时强调了代码的可读性和可维护性让读者能够更好地理解代码的结构和逻辑从而更好地进行编程开发活动最后通过总结概括了本文的主要内容和重点让读者能够更好地掌握和应用所学知识内容并引导读者进一步深入学习和探索相关领域的更多知识内容。


0
收藏0
文章版权声明:除非注明,否则均为VPS857原创文章,转载或复制请以超链接形式并注明出处。

相关阅读

  • 【研发日记】Matlab/Simulink自动生成代码(二)——五种选择结构实现方法,Matlab/Simulink自动生成代码的五种选择结构实现方法(二),Matlab/Simulink自动生成代码的五种选择结构实现方法详解(二)
  • 超级好用的C++实用库之跨平台实用方法,跨平台实用方法的C++实用库超好用指南,C++跨平台实用库使用指南,超好用实用方法集合,C++跨平台实用库超好用指南,方法与技巧集合
  • 【动态规划】斐波那契数列模型(C++),斐波那契数列模型(C++实现与动态规划解析),斐波那契数列模型解析与C++实现(动态规划)
  • 【C++】,string类底层的模拟实现,C++中string类的模拟底层实现探究
  • uniapp 小程序实现微信授权登录(前端和后端),Uniapp小程序实现微信授权登录全流程(前端后端全攻略),Uniapp小程序微信授权登录全流程攻略,前端后端全指南
  • Vue脚手架的安装(保姆级教程),Vue脚手架保姆级安装教程,Vue脚手架保姆级安装指南,Vue脚手架保姆级安装指南,从零开始教你如何安装Vue脚手架
  • 如何在树莓派 Raspberry Pi中本地部署一个web站点并实现无公网IP远程访问,树莓派上本地部署Web站点及无公网IP远程访问指南,树莓派部署Web站点及无公网IP远程访问指南,本地部署与远程访问实践,树莓派部署Web站点及无公网IP远程访问实践指南,树莓派部署Web站点及无公网IP远程访问实践指南,本地部署与远程访问详解,树莓派部署Web站点及无公网IP远程访问实践详解,本地部署与远程访问指南,树莓派部署Web站点及无公网IP远程访问实践详解,本地部署与远程访问指南。
  • vue2技术栈实现AI问答机器人功能(流式与非流式两种接口方法),Vue2技术栈实现AI问答机器人功能,流式与非流式接口方法探究,Vue2技术栈实现AI问答机器人功能,流式与非流式接口方法详解
  • 发表评论

    快捷回复:表情:
    评论列表 (暂无评论,0人围观)

    还没有评论,来说两句吧...

    目录[+]

    取消
    微信二维码
    微信二维码
    支付宝二维码