📜  C++中的数据抽象(1)

📅  最后修改于: 2023-12-03 15:14:03.637000             🧑  作者: Mango

C++中的数据抽象

C++中的数据抽象是一种将数据和操作数据的方法捆绑在一起的编程风格。数据抽象允许开发人员将实现细节从用户接口中分离出来,以便进行单独修改、测试和使用。在C++中,数据抽象由类实现,类封装了数据成员和成员函数。

类的定义

通过类的封装特性来创造一个具有良好封装和模块化的程序是良好编程实践之一。以下是定义一个类的基本语法:

class class_name 
{
    access_specifier:
        data_member1;
        data_member2;
        member_function1();
        member_function2();
    access_specifier:
        data_member3;
        data_member4;
        member_function3();
        member_function4();
};

其中,class_name是类的名称,access_specifierpublicprivateprotected 中的一个,data_member 是类变量,member_function 是类函数。

数据封装

C++通过访问控制符publicprivateprotected来判定数据的访问权限。

public是一种公共形式,表示可以在类的内部和外部访问该成员的数据成员或函数成员。所有的对象都能够访问其中的数据成员和函数成员。

private是一种私有形式,表示只能在类的内部访问该数据成员或函数成员。外部不可以访问。

protected的含义与private一样,只不过对子类而言,protected成员是可访问的。

以下是一个基本示例:

#include <iostream>
using namespace std;

class Box
{
    private:
        double width;
    public:
        void setWidth( double wid );
        double getWidth( void );
};

// 成员函数定义
double Box::getWidth(void)
{
    return width ;
}

void Box::setWidth( double wid )
{
    width = wid;
}

// 程序主函数
int main()
{
   Box box;

   // 使用成员函数设置宽度
   box.setWidth(10.0); 

   // 使用成员函数获取宽度
   cout << "Width of box : "<< box.getWidth() << endl;

   return 0;
}

在上面的示例中,widthprivate,这意味着在类的外部不可以访问该变量。但是,可以在 setWidthgetWidth 函数访问 width 变量,因为它们是类的成员函数。

内联函数

在C++中,内联函数是通过将函数代码插入到每次调用该函数的地方来实现函数的范例调用,提高执行效率。

可以在前面使用inline关键字来定义内联函数,也可以省略该关键字,直接使用函数的定义来隐式地定义内联函数。

在调用内联函数时,编译器只需简单地将函数调用,转换为函数代码,而不会把函数调用与函数调用语句联系起来。

以下是一个内联函数的示例:

#include <iostream>
using namespace std;

inline int Max(int x, int y)
{
    return (x > y)? x : y;
}

// 主函数
int main()
{
    cout << "Max(20,10): " << Max(20,10) << endl;
    cout << "Max(0,200): " << Max(0,200) << endl;
    cout << "Max(200,0): " << Max(200,0) << endl;

    return 0;
}

输出结果:

Max(20,10): 20
Max(0,200): 200
Max(200,0): 200
总结

通过C++中的数据抽象,可以有效地将实现细节与用户接口分离,以便进行单独修改、测试和使用。通过使用类的封装特性来创造一个具有良好封装和模块化的程序是良好编程实践之一。C++通过访问控制符publicprivateprotected来判定数据的访问权限,内联函数可以提高程序执行效率。