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