C++ 类成员函数

返回上一级

类的 成员函数 是指那些把定义和原型写在类定义内部的函数,就像类定义中的其他变量一样

C++ 类的成员函数有三个特征:

  1. 声明和定义都是在类内部
  2. 调用需要通过类或者类的对象作为前缀
  3. 类成员函数是类的一个成员,它可以操作类的任意对象,可以访问对象中的所有成员

没有类成员函数之前

在前面的章节中,我们使用了下面的代码求一个长方体的体积

#include <iostream>

class Box
{
   public:
      double length;   // 长度
      double breadth;  // 宽度
      double height;   // 高度
};

int main( )
{
   Box Box1;        // 声明 Box1,类型为 Box
   double volume = 0.0;     // 用于存储体积

   // box 1 详述
   Box1.height = 5.0; 
   Box1.length = 6.0; 
   Box1.breadth = 7.0;

   // box 1 的体积
   volume = Box1.height * Box1.length * Box1.breadth;
   std::cout << "Box1 的体积:" << volume << std::endl;

   return 0;
}

一般情况下,我们都会将求体积的代码封装成一个函数

double volume_it( Box box )
{
    return box.height * box.length * box.breadth;
}

但是大家有没有发现这样不够美观,每次调用都要传递一个 Box 对象作为参数

如果能够更简单一些,比如像调用对象的属性一样调用一个方法 box.volume() 就能得到体积那么多好

好像 C++ 天生就帮我们想到了这一点,因为它可以定义类成员函数

定义类成员函数

类成员函数就是定义在类内部的函数,定义方式和普通方式一样,只不过它的定义和声明放到了类的内部

比如上面范例中的 Box 类,我们可以定义一个求体积的类成员函数 double getVolume()

class Box
{
   public:
      double length;          // 长度
      double breadth;         // 宽度
      double height;          // 高度
      double getVolume(void); // 返回体积
};

我们可以在定义一个类成员函数的同时给出函数实体,就像下面这样

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 mbox;           // 创建一个对象
mBox.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;                // 声明 Box1,类型为 Box
   Box Box2;                // 声明 Box2,类型为 Box
   double volume = 0.0;     // 用于存储体积

   // box 1 详述
   Box1.setLength(6.0); 
   Box1.setBreadth(7.0); 
   Box1.setHeight(5.0);

   // box 2 详述
   Box2.setLength(12.0); 
   Box2.setBreadth(13.0); 
   Box2.setHeight(10.0);

   // box 1 的体积
   volume = Box1.getVolume();
   cout << "Box1 的体积:" << volume <<endl;

   // box 2 的体积
   volume = Box2.getVolume();
   cout << "Box2 的体积:" << volume <<endl;
   return 0;
}

编译和运行以上 C++ 代码,输出结果如下

Box1 的体积: 210
Box2 的体积: 1560

返回上一级

C++ 基础教程

关于   |   FAQ   |   我们的愿景   |   广告投放   |  博客

  简单教程,简单编程 - IT 入门首选站

Copyright © 2013-2022 简单教程 twle.cn All Rights Reserved.