目录
类定义的位置:在header file 头文件中(使类域链接到各个.cpp)
2.类的方法——不用传对象地址的直接使用对象数据的定义与声明是否分离的成员函数
②成员函数的定义与声明不分离联函——类域定义的成员函数是内联
2.3类成员的分类访问限定以实现封装(预留的接口)——封装的概念
一,对象,类型和类,模板的概念和关系
1.对象(面向对象思想)
对象(物件)一词我们并不陌生,当然也不是C++乃至任何编程语言的特定称呼,对象一词是对于一个动作而言的,凡是动作就必有承受者与发出者,而作为客观存在的对象就充当着这两个角色,即对象是不会主动变化的具有属性客观存在,一切动作都以对象为核心(变量和对象的区别也再此,变量可做对象,对象不一定是变量)。对象就是具有类型的工具,而以该工具是否提供自身附带使用方法(是否有封装)为区分,进而诞生了两种实用工具的思维方式——面向对象和面向过程。也就是说使用的工具决定了你使用时的考量层次,就如生产螺丝为例。
工具1:锉刀,丝锥,攻丝。。。。
工具2;带有操作面板的生产线;
实用工具1:我们要考量,锉刀等怎么用(使用方法的设计);螺丝的标准(欲达到的效果);环节产品检查(接口的检查);
使用工具2:我只需从使用端考量螺丝标准(欲达到的效果),交给那样的机械(定义对象)无需参与螺丝的生产(无需使用方法的设计)(只需考量输入与产出)
前者就是面向过程;(依次进行的,关注动作)
后者就是面向对象;(依次进行的,关注动作的对象,对象间的交互的)
以上提到了两种对象——具有原料和方法的对象和具有原料不具有方法的对象
后者是使用结构体类型定义的,而前者是由类产出的。
综上:与作为执行者的面向过程不同,面向对象实际上是管理对象,对选择适当分配模式的对象并通过其附带的方法管理数据。我们说考量的的设计更强大的类型去管理数据。
2.类型和类(数据的合并思想)
上文我们已经提到就有方法的对象。如此必会存在数不胜的对象。这时候就要对存储功能和使用方法相同的对象进行合并生成一类对象——对象的类型。其实类型的概念同样的不是C++独有的,其实就像女生说,“你我不是一类人”,潜台词是说你与我的见识与处世的方法是不同的。犹如批量管理,所属类型不同管理方式不同。这样就使得数据处理快速而高效,这也是数据类型的含义。
类型是包含该类数据的存储方式和处理办法的。就像2.1和2在数学上也具有不同的类型,其存储的内容不同,其内容的含义也不同。具体的运算方式亦不同。
类是C++中对类型的定义,它是对类型分配功能和处理方式的实现层。通过定义类,类型得以实现。
数据是多样的,同样类也是多样的。这使得C++无提供满足人们要求的所有类,而是提供了设计类的方法;
3.模板(数据和方法的泛型思想=不同数据的合并)
同样类的这样是多种多样的,但却有一些类型都通过相类似的途径去处理数据。我们把功能实现途径相近,只是数据不同的类合并成一类数据(用一类数据占位),到是替换为具体数据——模板。
4.几者的关系
二,类
1,类的定义
类关键字 类名
{
函数方法区
成员属性区
};//本质上还是一类对象类型的定义,所以加;
类定义的位置:在header file 头文件中(使类域链接到各个.cpp)
1.1类的定义是类型的定义及与结构体区别
类的定义就是对象类型的定义 ,在C语言中结构体也是类型的定义,因为C++在某些场景下会调用C库,所以可在C++中使用结构体语法,然而值得注意的区别:
1.类名就是类型名 类型短(只在C语言中是需要typedef重命名的)
2.类中具有方法可以定义函数,声明函数 (结构体类型不具有方法,but也是要额外定义方法的)
不同类的属性不同,函数方法在全局域间可重载——成员函数名不用加前缀名以区分
同一个类内,不要使用者传对象地址——成员函数函数首个形参为this指针,可以隐式参(实际还是传的)
3,定义关键字:类struct class :机构体strut
类 | 结构体 | |
类型名 | 类名 | struct 结构体名 (typdef改名) |
访问权限 | 分区给权 | 全部公开 |
成员 | 原料+生产设备(有方法) | 原料 |
原料和方法 | 合并 | 分离 |
方法名 | 功能名 (重载,是因为域不同,域分开) |
对象名+功能名 |
单一对象方法调用时 | 不用传该对象 (传值,本质是传址) |
需要传该对象(传址) |
定义关键字 | struct class | struct |
方法的声明&#x |