c++复习笔记3

本文详细介绍了C++中的类和对象,包括struct与class的区别、构造函数、析构函数的工作原理,以及静态成员、单例模式、继承与多态等核心概念。重点讨论了构造函数的初始化列表、析构函数在内存管理中的作用,以及静态成员和常数据成员的使用。同时,还探讨了友元、继承和多态性的实现细节。
摘要由CSDN通过智能技术生成

类和对象

1. struct和class在定义类时最重要的区别:

 c++类通过class的private、protected和public实现访问访问控制。struct和class定义类的区别是:struct缺省(没有定义访问控制)的数据成员和成员函数是public类型的,而在class中缺省的数据成员和成员函数是private类型的。

 

2.构造函数:

  1)没有定义构造函数,则会自动生成一个缺省的构造函数;如果定义了任意一个构造函数,则不会生成缺省构造函数。构造函数的访问类型可以是多种,一般由一个公开构造函数。

 

  2)拷贝构造函数为单参数,用于构造已有对象的副本,为本类的常对象的应用。如果没有定义,则会自动生成一个缺省拷贝构造函数。缺省拷贝构造函数为浅拷贝,即只完成指针值得拷贝,无法完成指针指向数据对象的拷贝;成员为指针时,需要自行定义深拷贝。

  3)构造函数初始化列表,目的和意义:构造对象时同步构造内部对象;部分成员(常量与引用)只能初始化,不能赋值;部分成员(类的某个数据成员是另一个类的对象)如果赋值,将导致两次构造(在分配内存时,调用缺省构造函数构造,然后执行构造函数体内的赋值语句再次构造,效率不佳;若类没有缺省构造函数,将会导致问题)。成员初始化时按照成员定义的顺序定义,而不是初始化列表顺序;必须保持初始化列表和成员定义的顺序一致,但允许跳过部分成员,否则后续成员可能不能正确初始化。

 

3.析构函数

 1) 没有返回类型,无参数。析构函数必须是公开的,可以由系统自动调用,也可以由程序其他部分调用,但两者原理不同。若为定义,则会自动产生一个缺省析构函数。

 2)析构函数用于释放对象中动态分配内存的目标数据对象,缺省析构函数只能完成浅存的释放,深存(

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值