C++类&对象
C++在C语言的基础上增加了面向对象编程,C++支持面向对象程序设计。类是C++的核心特性,通常被称为用户定义的类型。
类用于指定对象的形式,它包含了数据表示法和用于处理数据的方法。类中的数据和方法称为类的成员。函数在一个类中被称为类的成员。
- C++类定义
定义一个类,本质上是定义一个数据类型的模板。实际上并没有定义任何数据。也就是说,它定义了类的对象包括了什么,以及可以在这个对象上执行哪些操作。
类定义是以关键字class开头,后跟类的名称。类的主体是包含在一对花括号中,类定义后必须跟着一个分号或者一个声明列表。例如石永红关键字class定义Box数据类型,如下所示:
class Box
{
public:
double length;
double breadth;
double height;
};
关键字public确定了类成员的访问属性。在类对象作用域内,公共成员在类的外部是可访问的。也可以指定类的成员为private或protected。
- 定义C++对象
类提供了对象的蓝图或模板,基本上对象是根据类来创建的,声明类的对象,就像声明基本类型的变量一样。下面的语句声明了类Box的两个对象:
Box Box1;//声明
Box Box2;
对象Box1和Box2都有各自的数据成员。
- 访问数据成员
类的对象的公共数据成员可以使用直接成员访问运算符(.)来访问。为了理解概念,尝试以下实例:
#include<iostream>
using namespace std;
class Box{
public:
double length;
double breadth;
double height;
};
int main(){
Box Box1;
Box Box2;
double volume = 0.0;
double volume2 = 0.0;
Box1.height = 5.0;
Box1.length = 6.0;
Box1.height = 7.0;
Box2.height = 10.0;
Box2.length = 12.9;
Box2.height = 13.9;
volume = Box1.height*Box1.length*Box1.height;
cout<<" volume of Box1:"<<volume<<endl;
volume2 = Box2.height*Box2.length*Box2.height;
cout<<"Volume of Box2:"<<volume2<<endl;
return 0;
}
结果显示:
注意:私有成员和受保护的成员不能使用直接访问运算符(.)来直接访问。
类成员函数
类的成员函数是指那些把定义和原型写在类定义内部的函数,就像类定义中的其他变量一样。类成员函数是类的一个成员,可以操作类的任意对象,可以访问对象中的所有成员。
现在要使用成员函数访问类的成员,而不是直接访问这些类的成员。
class Box{
public:
double length;
double breadth;
double height;
double getVolume(void);//返回体积
};
成员函数可以定义在类定义内部,或者单独使用范围解析运算符::
来定义。在类定义中定义的成员函数把函数声明为内联的,即使没有使用inline
标识符。所以可以按照如下方式定义volume()
函数:
class Box{
public:
double length;
double breadth;
double height;
double getVolume(void){
return length*breadth*height;
}
};
也可以在类的外部使用范围解析运算符::定义该函数,如下所示:
double Box::getVolume(void){
return length*breadth*height;
}
需要强调一点,在::
运算符之前必须使用类名。调用成员函数是在对象上使用点运算符(.),这样就能操作与该对象相关的数据,如下所示:
Box myBox;//创建一个对象
myBox.getVolume();//调用该对象的成员函数
实例:
#include<iostream>
using namespace std;
class Box{
public:
double length;
double breadth;
double height;
double getVolume(void);//成员函数声明
void setLength(double len);
void setBreadth(double bre);
void setHeight(double hei);
};
//成员函数定义
double Box::getVolume(void){
return length*breadth*height;
}
void Box::setLength(double len){
length = len;
}
void Box::setBreadth(double bre)
{
breadth = bre;
}
void Box::setHeight(double hei){
height = hei;
}
int main(){
Box Box1;
Box Box2;
double volume = 0.0;
double volume2 = 0.0;
//box1详述
Box1.setLength(6.0);
Box1.setBreadth(7.0);
Box1.setHeight(5.0);
//box2详述
Box2.setLength(12.0);
Box2.setBreadth(13.0);
Box2.setHeight(14.0);
volume = Box1.getVolume();
cout<<" volume of Box1:"<<volume<<endl;
volume2 = Box2.getVolume();
cout<<"Volume of Box2:"<<volume2<<endl;
return 0;
}
结果显示: