C++类&对象

发布时间 2023-11-01 20:47:15作者: Bonne_chance

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;
	
}

结果显示: