【C++】类和对象(下),C++进阶,类和对象的深入解析(下)

马肤

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

摘要:本文继续探讨C++中的类和对象(下)。详细介绍了类的继承、多态性和封装等特性,阐述了如何通过继承实现代码重用和层次结构,通过多态实现运行时类型识别和行为变化,通过封装隐藏对象内部状态并确保其完整性。还介绍了对象的创建、使用和销毁过程,以及类模板和STL库的应用。本文旨在帮助读者深入理解C++面向对象编程的核心概念和技术。

【C++】类和对象(下),C++进阶,类和对象的深入解析(下) 第1张

目录

再谈构造函数

1、1 构造函数体赋值

在创建对象时,编译器通过调用构造函数,给对象中各个成员变量一个合适的初始值,虽然构造函数体中的赋值操作可以给成员变量赋初值,但不能称之为初始化,因为初始化只能进行一次,而构造函数体内可以多次赋值。

初始化列表:以一个冒号开始,接着是一个以逗号分隔的数据成员列表,每个"成员变量"后面跟一个放在括号中的初始值或表达式。

注意:

1、每个成员变量在初始化列表中只能出现一次(初始化只能初始化一次)。

2、类中包含以下成员,必须放在初始化列表位置进行初始化:

* 引用成员变量

* const 成员变量

* 自定义类型成员(且该类没有默认构造函数时)。

示例代码:

class Date
{
public:
    Date(int year, int month, int day)
        : _year(year), _month(month), _day(day) // 使用初始化列表
    {
        // 构造函数体中的赋值操作
    }
private:
    int _year; int _month; int _day;
};

尽量使用初始化列表初始化,因为不管是否使用初始化列表,对于自定义类型成员变量,一定会先使用初始化列表进行初始化。

1、3 explicit关键字

使用explicit关键字可以禁止单参数构造函数的隐式类型转换,这有助于避免不必要的类型转换和潜在的问题。

class Date
{
public:
    explicit Date(int year) // 使用explicit修饰,禁止隐式类型转换
        : _year(year) 
    {}
private:
    int _year; // 年份成员变量声明和定义省略其他部分...省略其他部分...省略其他部分...省略其他部分...省略其他部分...省略其他部分...省略其他部分...省略其他部分...省略其他部分...省略其他部分...省略其他部分...省略其他部分...省略其他部分...省略其他部分...省略其他部分...省略其他部分...省略其他部分...省略其他部分...省略其他部分...省略其他部分...年等成员变量声明和定义等细节代码等细节代码等细节代码等细节代码等细节代码等细节代码等细节代码等细节代码等细节代码等细节代码等细节代码等细节代码等细节代码等细节代码等细节代码等细节代码等细节代码等细节代码等细节代码等细节代码等细节代码等细节代码等细节代码等细节代码等细节代码等细节代码等细节代码等细节代码,省略其他部分的详细实现,省略其他部分的详细实现,省略其他部分的详细实现,省略其他部分的详细实现,省略其他部分的详细实现,省略其他部分的详细实现,省略其他部分的详细实现,此处仅展示关于explicit关键字的用法和说明,此处仅展示关于explicit关键字的用法和说明,此处仅展示关于explicit关键字的用法和说明,此处仅展示关于单参数构造函数的用法和说明,此处仅展示关于单参数构造函数的用法和说明,此处仅展示关于单参数构造函数的用法和说明,此处仅展示关于Date类的定义和实现的一部分内容,Date类的定义和实现还包括其他一些重要的内容,例如成员函数、运算符重载等等,这些内容的详细实现将在后续代码中给出,此处仅展示关于Date类的定义和实现的一部分内容,Date类的定义和实现还包括其他一些重要的内容等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等内容等等内容等等内容等等内容等等内容等等内容等等内容等等内容等等内容等等内容等等内容等等内容等内容,此处仅展示关于Date类的定义和实现的一部分内容,更多详细内容将在后续代码中给出,此处仅展示关于Date类的定义和实现的一部分内容(续),由于篇幅限制,无法在此处展示完整的Date类的定义和实现的所有内容,我们将在后续代码中继续展示Date类的定义和实现的其他重要部分,我们也将提供一些关于如何使用Date类的示例代码和测试用例,以帮助读者更好地理解和掌握这个类的用法和功能,我们也将提供一些关于如何使用Date类的建议和注意事项,以帮助读者更好地应用这个类并解决实际应用中的问题,我们还将介绍一些与Date类相关的其他知识点和技术点,以帮助读者更全面地了解相关技术和领域的知识体系,我们还将提供一些关于编程和软件开发方面的经验和技巧分享,以帮助读者提高编程能力和水平,我们还将不断学习和探索新的技术和领域的知识体系并将其应用到软件开发中以提高软件的质量和性能等方面的工作中去。"}}"}}"}}"}}"}}"}}"}}"}}"}}"}}"}}"}}"}}"}}"}}"}}"}}"}}"}}"}}"}}"`}}"] 展开全文 "收起全文 二、static成员 静态成员变量是属于整个类的,而不是属于任何一个

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人围观)

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

    目录[+]

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