面向对象语言界有句话说的好:万物皆对象!
我们人,猴子,猫,狗,汽车,木材,行星等等都可以看作对象. 对象有对象的属性及行为.比如猫的属性有发色,毛长,眼睛颜色等;而行为有捕鱼,吃鱼,行走,跑等等.这就是所谓的对象的两大要素.
每个对象都有与之相似的对象集.比如黑猫,白猫,波斯猫,中国猫,日本猫等,它们本质都属于猫,只不过个体之间的属性及行为有所差异. c++中可以类class来表征一集合的共有特征.
类就是相似对象的模子,按照这个模子就可以创造出万千同类对象,这就是类存在的意义.
概念说完,开始说c++中的类的知识点!
class Line
{
int width;
public:
void setwidth();
int getwidth();
};
以上就是一个类,它有私有数据width,公共接口(公有成员函数)
c++中用数据类型表示对象的属性,成员函数表示行为(方法).-----------------------------------数据封装(把属性和方法封装在一起)
成员有访问控制:public, protected, private 三种; 这种设计就是为了更好的抽象对象的数据,通过接口操作对象,而不是直接操作对象的所有成员,保留了它内部数据构成的细节.------------------------数据抽象
显然,对象不能直接操纵私有,和保护类型的成员,但是可以通过接口(公有对象)来操纵!----------------------------------------------接口就是用来建立类对象与外界的桥梁
注意:成员函数可以访问任意对象内的成员(包括任意访问控制类型的成员).
访问控制中的公共类型可以被对象直接使用; protected类型可以被成员函数及友元访问及派生类访问; private 只能被成员函数及友元访问.
类的组成通常有以下几部分组成:
多种数据属性
构造函数
析构函数
复制构造函数
对象行为的函数
静态数据
静态函数
友元函数和类
数据属性: 即表征数据的属性.
构造函数: 对象创建时被系统自动调用,一般用于初始化对象属性. 在程序员没有创建它时,系统自动创建一个默认的构造函数. Line::Line( [n1,n2,...] ){/* -------*/},,可以有多个,且可以有参数.
析构函数: 它是一个特别的构造函数.对象消亡前系统调用,以完成一些必要的操作,如delete new出来的空间. 在没有时,系统也会自动创建一个默认的析构函数. Line::~Line(){/*--------------*/} 只能有一个,且没有参数
复制构造函数: 专用于解决对象之间的赋值操作,由于对象非基本类型,不能简单的赋值.所以就有了这个特别的构造函数. Line::Line(const Line &obj){/*--------------*/} 这也是一个构造函数,是在赋值时由系统
自动调用的.没有返回值.(忘了讲,这个函数专用于在新对象被旧对象赋值,对象作为函数传参以及对象作为返回值时被调用),显然,本质上都是对象之间的赋值引起了这个函数的运转. 有一点需要注意,其参数也是 固定的,const Line &obj 所以这个函数也只有一个,如果没有设计的话,系统会有一个默认的复制构造函数以待使用.(可能有人疑惑,为啥必须是const Line &obj 呢?因为这里是对他的引用,并非赋值!我们用它 就是为了解决对象之间的赋值的,怎么能在它本身上面又出现对象赋值呢? 至于为啥有const 我想这是c++设计师的事了?).
对象行为函数: 很好理解,就是有关于我们想在此对象上附加的操作或者方法
静态数据: 供所有属于此类的对象公用的一个数据,并非某一个对象所有.如果把类的对象组成看作一个集合,那静态数据就相当于此集合的特征数据,描述集合的某一特征的.
静态函数: 从略*******************************
友元函数及友元类:从略***************************