类和对象(下篇)

本文围绕类和对象展开,介绍构造函数,包括初始化列表及单参构造函数的隐式类型转化,explict可阻止该转化。还阐述了static成员,其变量需在类外初始化,函数无this指针。此外,讲解了友元函数、友元类和内部类,最后提及内置和自定义类型的内存开辟、释放及异常处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、再谈构造函数
在类和对象(上篇)中,我们已经介绍了构造函数,所谓构和造函数就是完成初始化功能的函数。虽然构造函数在被调用之后,对象中已经赋了一个值,但是不能将其称为对象的初始化,因为初始化只有一次,而赋值可以有多次。
a. 初始化列表:就是成员变量定义的地方,,初始化成员变量。
b. 形式:
构造函数()
:成员(值/初始化表达式)
,成员
{}
c. 每个成员变量在初始化列表中只能初始化一次
d.必须在初始化列表中初始化的成员
引用成员(定义的时候必须初始化)
const成员(定义的时候必须初始化)
自定义成员(无默认构造函数的)
2、构造函数不仅有初始化的功能,对于单个参数还具有隐式类型转化的作用
explict 构造 函数()
{
}
阻止单参构造函数的隐式类型转换
3、static成员

  1. 声明为static的类成员称为类的静态成员,用static修饰的成员变量,称之为静态成员变量;用static修饰的
    成员函数,称之为静态成员函数。静态的成员变量一定要在类外进行初始化
    2)修饰成员变量
    存放在数据段,全局只有一份,所有对象共享,可以看做类成员
    访问:类名::成员,对象访问
    3)修饰成员函数
    没有this指针
    不能访问非静态成员函数
    非静态成员函数可以访问静态成员函数
    访问方式:类名::成员函数,对象访问
    4、友元
    1)友元函数
    在类内声明,类外定义,不属于成员函数,friend函数
    可以访问类的所有成员
    突破封装,重载<<,>>,cin>>对象,cout<<对象;成员函数:对象>>cin,对象 <<cout
    2)友元类
    friend class 类名
    友元类的所有成员函数都为另一个类的友元函数
    友元关系不能传递
    友元关系是单向的
    3)内部类
    可以看做是外部类的友元类
    对于外部类的普通成员访问:对象访问
    对于外部类的static成员访问:直接访问,对象访问
    不从属于外部类,是一个独立的类
    外部类对于内部类没有任何优越的访问权限
    5、内置类型
    是指int ,float,char等的这些类型
    malloc:只开辟空间,空间开辟失败,,返回空指针
    free:释放空间
    new:new–>operator new -->malloc+异常,空间开辟失败,抛异常
    6、自定义类型
    malloc:只开辟空间,空间开辟失败,返回空指针
    free:释放空间
    new:new–>operator new–>malloc+异常–>构造,空间开辟失败
    7、抛异常
    delete:delete–>析构–>operator delete -->free
    new[]:调用N次operator new,调用N次构造函数
    delete[]:调用N次析构函数,调用N次operator delete
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值