在C++中类与对象是最重要的一章,今天我们来学习类与对象。
目录
1.类
1.1 类的结构
1.1.1 类使用关键词class进行定义,四要素:类名、数据成员、函数成员、成员访问限定符。
1.1.2 成员访问限定符有三种分别是私有成员(private)
只能由类中的函数访问,不可在类外进行访问。
公有成员(public)
可被该类的其他成员函数及类外的其他函数访问。
保护成员(protected)
1.1.3成员函数的定义方式有两种:1、直接在类的内部进行定义
2、在类的内部进行函数的声明,在类的外部进行函数的定义
1.2 类的定义
在面向对象程序设计中,要想在程序中创建对象,就必须先定义对象的所属类。类是对象的抽象,是一种自定义数据类型,类是用于描述一组对象的共同特征和行为,例如兔子,老虎,鹰作为对象,它们就是属于动物类的,动物就是它们共同的特征。
在类中,我们可以定义数据成员和成员函数,数据成员用来描述对象特征,成员函数用来描述对象行为。数据成员被称为属性,成员函数被称为方法。例如对象是一辆车,数据成员就相当与是这辆车有几个轮子,几个座位等,成员函数就是指这辆车怎么行驶的,怎么停靠的。
1.2.1 类的定义形式如下:
class 类名 注意:1、class是定义类关键字;
{ 2、class后的类名首字母要大写且类名要与class要
成员访问限定符: 用空白字符分隔;
数据成员; 3、要在“}”后面加上“;”表示类定义的结束。
成员访问限定符:
成员函数;
};
例:
class Car //定义类Car
{
public: //public访问限定符
void drive(); //开车方法
void stop(); //停车方法
private: //private访问限定符
int m_nWheels; //车轮数量
int m_nSeats; //座位数量
};
上述代码定义了一个简单的汽车类。其中,Car是类名,m_nWheels、m_nSeats是数据成员,有私有成员private的属性,drive()和stop()是成员函数,描述开车和停车的方法,有公有成员public的属性。
接下来我们将完善以上定义的汽车类。
1.2.2 通过1.1.3我们知道成员函数定义的两种方法
1、类内声明,类内定义;2、类内声明,类外定义。
例一:
class Car
{
public:
void drive()
{
cout<<"检查车辆外部安全状况"<<endl;
cout<<"点火"<<endl;
cout<<"挂一档、松手刹、慢抬离合、加油、出发"<<endl;
}
void stop()
{
cout<<"到达位置后、拉紧手刹、停火"<<endl;
}
private:
int m_nWheels;
int m_nSeats;
};
例二:(在类外定义的成员函数,必须在函数名前加上类名,类名后加加作用域限定符“::”)
class Car
{
public:
void drive();
void stop();
private:
int m_nWheels;
int m_nSeats;
};
void Car::drive()
{
cout<<"检查车辆外部安全状况"<<endl;
cout<<"点火"<<endl;
cout<<"挂一档、松手刹、慢抬离合、加油、出发"<<endl;
}
void Car::stop()
{
cout<<"到达位置后、拉紧手刹、停火"<<endl;
}
2.对象
通过阅读上述类的定义,我们对对象的含义也有大致的了解,简单的说int a;,a就是int类型的对象。
2.1 创建对象
C++中提供了很多种创建对象的方法,最简单的方法就是给出类型及变量名:类名对象列表;
定义int类型变量:int a;
创建Car类对象:Car mycar;
创建类与int型变量的定义过程类似,创建类对象就要给其分配空间,存储对象的成员。
2.2 访问对象成员
创建对象的目的是访问成员,操作对象的属性及方法,访问对象成员的语法格式如下:
对象名 . 数据成员名
对象名 . 成员函数名
访问格式中,“.” 称为成员运算符,C++中访问成员的方式都是通过 “.” 运算符完成的。
例:
Car mycar;
mycar.drive(); //mycar对象访问成员函数
访问成员函数的方法与函数调用形式类似,只是需要使用对象名通过成员运算符访问该函数,若要通过类的对象mycar访问成员函数,可以通过以下代码实现
#include<iostream>
#include<string>
using namespace std;
class Car
{
public:
void drive();
void stop();
private:
int m_nWheels;
int m_nSeats;
};
void Car::drive()
{
cout<<"检查车辆外部安全状况"<<endl;
cout<<"点火"<<endl;
cout<<"挂一档、松手刹、慢抬离合、加油、出发"<<endl;
}
void Car::stop()
{
cout<<"到达位置后、拉紧手刹、停火"<<endl;
}
int main()
{
Car car;
Car mycar;
mycar.drive();
mycar.stop();
system("pause");
return 0;
}
运行结果:
检查车辆外部安全状况
点火
挂一档、松手刹、慢抬离合、加油、出发
到达位置后、拉紧手刹、停火
请按任意键继续. . .
3. 应用实例
以圆为例,计算圆的周长和面积。
#include<iostream>
#include<string>
using namespace std;
const double PI=3.14159;
class Circle
{
public:
void Rad(double r);
double Circumference();
double Area();
private:
double radius;
};
//类的实现
void Circle::Rad(double r)
{
radius=r;
}
double Circle::Circumference()
{
return 2*PI*radius;
}
double Circle::Area()
{
return PI*radius*radius;
}
//调用对象的成员函数是Circle对象获取周长和面积的方法
int main()
{
Circle circle;
circle.Rad(4.0);
cout<<"圆的周长为:"<<circle.Circumference()<<endl;
cout<<"圆的面积为:"<<circle.Area()<<endl;
return 0;
}
以上就是类与对象基础篇的全部内容了,欢迎大家补充,如有错误还请指正。
我们下周见。