-
类是面向对象程序设计方法的核心,利用类可以实现对数据的封装和隐蔽。在面向对象程序设计中,程序模块是由类构成的,类是对逻辑上相关的函数与数据的封装,它是对问题的抽象描述。因此集成程度更高,更适合于大型复杂程度的开发。
-
c++的基本数据类型也远不能满足描述现实世界中各种对象的需要。于是c++提供了对自定义类型的支持,这就是类。可以用自定义类的变量表示“时钟”,“汽车”,“几何图形”或“人”等对象。正如基本数据类型隐含包括了数据和操作,在定义一个类时也要说明数据和操作。
-
当定义一个类之后,便可以定义该类的变量,这个变量就称为类的对象。
-
定义类的语法形式如下:
class 类名称
{
public:
外部接口
protected:
保护型成员
private:
私有成员
};
封装了某类的数据和行为,称为该类的数据成员和函数成员。其中public,protected,private分别表示对成员的不同访问控制权限。注意,在类中可以只声明函数的原型,函数的实现(函数体)可以在类外定义。 -
类的成员包括数据成员和函数成员,分别描述问题的属性和行为。
公有类型成员定义了类的外部接口。公有成员用public关键字声明,在类外只能访问类的公有成员。
在关键字private后面声明的就是类的私有成员,私有成员只能被本类的成员函数访问,来自类外部的任何访问都是非法的。
保护类型成员的性质和私有成员的性质相似,其差别在于继承过程中对产生的新类影响不同。 -
类实际上一种抽象机制,它描述了一类事物的共同属性和行为。在c++中,类的对象就是该类的某一特定实体(即实例)。
声明一个对象:类名 对象名
Clock myclock;
定义了类和对象,就可以访问对象的成员,这种访问采用的是“.”操作符。
对象名.数据成员名
对象名.函数成员名(形参表)
在类的外部只能访问到类的公有成员,在类的成员函数中,可以访问到类的全部成员。 -
类的成员函数描述的是类的行为。
实现成员函数时要指明类的名称:
返回值类型 类名::函数成员名(参数表)
{
函数体
}
①在成员函数中可以不使用“.”操作符而直接引用目的对象的数据成员。在成员函数中引用其它对象的属性和调用其它对象的方法时,都需要使用“.”操作符。
②注意,在类的成员函数中,既可以访问目的对象的私有成员,又可以访问当前类的其它对象的私有成员。
③带默认形参值的成员函数:类成员函数的默认值,一定要写在类定义中,而不能写在类定义之外的函数实现中。 -
如果有函数成员需要被频繁调用,而且代码比较简单,这个函数也可以定义为内联函数。内联成员函数的函数体也会在编译时插入到每一个调用它的地方。这样做可以减少调用的开销,提高执行效率,但是却增加了编译后代码的长度。只有相对简单的成员函数才可以声明为内联函数。
①内联函数的声明有两种方式:隐式声明和显式声明。
②将函数体直接放在类体内,称为隐式声明。
③可以采用关键字inline显式声明的方式。即在函数体实现时,在函数返回值类型前加上inline,类定义中不加入函数体。
程序实例:时钟类的完整程序
#include<iostream>
using namespace std;
class Clock{
public:
void setTime(int newH=0,int newM=0,int newS=0);//默认形参值
void showTime();
private:
int hour,minute,second;
};
void Clock::setTime(int newH,int newM,int newS){
hour=newH;
minute=newM;
second=newS;
}
inline void Clock::showTime(){
cout<<hour<<minute<<second<<endl;
}
int main(){
Clock myClock;
cout<<"First time set and output:"<<endl;
myClock.setTime();
myClock.showTime();
cout<<"Second time set and output:"<<endl;
myClock.setTime(8,30,30);
myClock.showTime();
return 0;
}