在现实生活中,为了将相同的事物进行对比和管理,会将这些事物进行整理和分类。每种类型都有自己特别的属性和行为。
程序的指令序列都是对数据的操作和处理,结构程序设计的核心是函数的定义和调用,而面向对象的程序设计思路是将对象抽象为类,通过类声明和定义数据成员(变量)和方法(函数),再将对象实例化为对象,实现对类成员的访问。通过类和对象实现了数据和方法的封闭、继承以及多态。
在VC++中,通过类向导新建一个新类后,VC++会自动新建一个h头文件和CPP类文件,如新建circleArea类后,VC会自动新建circleArea.h和circleArea.cpp两个文件,前者主要是类的声明,后者主要是类方法的定义。
对象是类的一个实例,类和对象的关系就如同整型数据类型与整形变量一样,类就是一种自定义的数据类型,而对象是一种具体化了的数据的集合。
一个类里包括的成员有成员变量和成员函数。成员变量可以想像成该类型事物所具有的属性,而成员函数可以想像成该类型事物所具有的行为。
如同函数需要声明、定义、调用一样,类和对象也要有类成员的声明、定义、对象的声明(也就是类的实例化,就像变量声明数据类型一样)和成员变量和成员方法的调用。
类的定义主要是类的成员函数的定义,因为类的数据成员的定义相对还是简单的。
class 类名
{
定义数据成员;
定义或声明成员函数;
}
1.1 将成员函数定义在类的外部
类声明时必须给出函数原型,函数体在外部定义。函数定义形式为:
返回类型 类名::函数名(参数列表)
{
……}
例:
class circleArea //声明类
{
private:
float r;
public:
float area(); //声明成员函数
};
float circleArea::area() //类的成员函数定义
{
return 3.1416*r*r;
}
1.2 将函数成员定义在类的内部
class circleArea //声明类
{
private:
float r;
public:
float circleArea::area() //类的成员函数定义
{
return 3.1416*r*r;
}
};
定义对象也就是对象的声明与实例化。
基本形式:
类名 对象;
在定义类对象时,也可以将类对象声明为一个指针,并用new运算符为指针分配内存并对这个对象进行实例化,如:
circleArea *circleA = new circleArea;
类是对象的抽象,对对象的分类,对象是类的实例,是类的具体化。
对象是类的一个实例,类和对象的关系就如同整型数据类型与整形变量一样,类就是一种自定义的数据类型,而对象是一种具体化了的数据的集合。
类的成员封闭在类内,类可以有子类,相互之间是继承关系,类可以多态实例化对象。
类在程序运行时会被加载到指定的内存空间中,而类的对象在实例化后只是将类中定义的成员变量作为对象存储在单独的内存空间中,对于类中的方法并不在对象所在的空间中开辟新的空间,当对象调用其类中定义的某个方法时其实是到类的存储空间中调用的。所以说,如果没有类就不会存在对象。
当定义了一个类的对象之后,就可以对这个类的成员进行访问、调用。无论是数据成员还是函数成员,只要其类型是公有的,在类的外部都可以点运算符“.”进行访问,访问的形式如下:
对象名.数据成员;
对象名.函数成员(实参列表);
如果类对象被定义为指针,需要使用“->”运算符来访问类的成员,而不能使用“.”运算符访问,如:
circleArea *circleA = new circleArea;
float x;
x = circleA->area(10);
-End-
联系客服