类类的两种定义;
1;将类的声明与定义全部放在类中——成员函数默认为内联函数。
2;将类的声明放在头文件中,类的定义放在源文件中 注意;成员函数在外部定义时,函数名字前必须增加类的名字以及作用域限定符。
C++基于面向对象:面向过程,
面向对象;封装,继承,多态
1 什么是封装? 将一些事物内部实现细节隐藏起来,向外暴露一些公有的接口让他与其他对象进行交互。
2 C++中如何实现封装?
类;将事物的属性和方法包装在一起 访问权限;确认哪些属性和方法可以在外部(类的外部)被使用
private protect; public
,
class默认的访问权限是private struct默认的访问权限是public–兼容C语言
类的实例化; 类—>实例化----->对象 如何计算一个类的大小?
与c语言中秋=求结构体的大小是完全相同的。 空类为一个字节()
指定对齐 #pragma pack(1,2,4,8,16)
类和对象中—类中六个默认的成员函数
如何计算一个类的大小?----空类(主流编译器一个字节)
构造函数;可以重载 特性;,默认;如果用户没有显示定义,编译器将会生成一份:
1:概念
2:特性
3:调用场景
4:默认函数
5:关于编译器生成
完成对象的初始化工作;构造函数
完成对象中资源清理工作;析构函数
完成对象拷贝;拷贝构造函数。也是构造函数的一种重载形式
单参数(const类类型&)-----》如果没有按照&方式提供:编译器编译失败,导致无限递归
Test1(Date d); Data Test2();
默认拷贝构造函数,浅拷贝------讲一个对象中内容原封不动的拷贝到另一个对象中农Data----》编程器生成的默认拷贝构造 Sting完成对对象取地址工作
赋值运算重载;
地址运算符重载=-----> 函数//运算符重载;
Bool operator=(const Data& left, const Data& right)
{
return left._year == right.year&&left._month == right.month&&left._day == right._day;
}