今天讲的是c++的灵魂“类”,如果不能真正的掌握类,就不能真正的掌握c++。
先讲一些特点:
对象和类的特性:凡是以类对象为基本构成单位的程序称为基于对象的程序,而面向对象程序设计着还有个更多的要求。面向对象程序设计有4个主要特点:抽象,封装,继承和多态性。C++的类对象体现了抽象和封装的特性,在此基础上再利用继承和多态性,就成为真正的面向对象的程序设计。
任何一个对象都应当具有俩个要素,即属性和行为。对象是由一组属性和一组行为构成的。
面向对象程序设计方法的一个重要特点就是“封装性”,所谓的“封装”指俩方面含义:一是将有关的数据和操作代码封装在一个对象中,形成一个基本单位,各个对象之间相对独立,互不干扰。二是将对象中某些部分对外隐蔽,即隐蔽其内部细节,只留下少量接口,以便与外界联系,接受外界的信息。这周对外界隐蔽的做法称为信息隐蔽。
类的声明和对象的定义
类和对象的关系:类是对象的抽象,而对象是类的具体实例。
声明类类型(结构体默认的访问权限是共有的,类默认的则是私有的)
声明形式: class 类型名
{
在花括号内定义数据成员,成员函数,构造函数等等
};//这个分号要特别警惕着一定要有。
然后就是声明对象 可以在主函数内声明,也可以在主函数外声明,但是一定要在前面协商类型名后定义:类型名 b1,b2,…
数据成员分有public和private俩个类型,可以多次定义私有和共有的,但是为了可读性最好还是写在一次好。(结构体默认的访问权限是共有的,类默认的则是私有的)
定义对象的方法:.声明了类类型后可以有这俩种方式进行定义:(1).class 类型名a,b,c…; (2).类型名 a,b,c…;
在类外定义成员函数(在类内要进行函数声明)::在类内直接定义函数时,不需要在函数名前面加上类名,毕竟都在类内定义了那必然是明确是在哪个类了,但是要是定义在类外的话,计算机不知道是哪个类的成员函数,所以我们引进一个作用域限定符::,一般形式数据类型类型名::函数名()
{
} //花括号内进行所像的操作。
内置成员函数::如果成员函数定义在类内了,系统会自己将这个成员函数定义成内置函数,但是定义在类外就要在函数的声明或者函数的定义处加上inline。
成员函数的存储方式::(1)定义对象是不占用内存空间的,但其定义对象会为每个对象分配空间(只为对象的数据成员分配存储空间)
(2)成员函数的代码为该类的所有对象共享(不论成员函数在类内定义还是在类外定义,成员函数的代码段的存储方式是相同的,都不占用对象的存储空间)(不论是否用inline声明,成员函数的代码段都不占用对象的存储空间,inline函数只影响程序的执行效率,而与成员函数是否占用对象的存储空间无关)
(3)虽然成员函数并没有放在对象的存储空间种,但从逻辑的角度,成员函数是和数据一起封装在一个对象中的,只允许本对象中成员的函数访问同一对象中的私有成员。
8,怎么访问对象的成员
1 .(通过对象名和成员运算符访问对象中的成员)
2.(通过指向对象的指针访问对象中的成员)
3.(通过对象的引用访问对象中的成员)
(1).定义了一个对象b1,一般形式是::对象名.成员名 (在一个类中应当至少有一个公用的成员函数,作为对外的接口,否则就无法对对象进行任何操作)
(2).定一个一个指针*a,将指针指向对象,所以指针就代替了对象名,然后通过指针的访问方式 一般形式::a-》对象的数据成员,这样进行访问
(3).就是使用引用&,将对象名赋给&a,eg::&a=b(b是已经定义好的对象),之后的引用就和第一种是一样的,a.成员名。
这里就是一些冠以类的声明和对象定义的一样特点和方式,如果有错或者有补充可以打在评论区,感谢大家。