类的分文件编写(以C++为例)

前言

类的分文件编写是一种常用的软件开发技术,特别适用于大型项目。本文将介绍如何以C++为例进行类的分文件编写,以提高代码的可维护性和可扩展性。
在软件开发中,良好的代码组织和结构是至关重要的。当项目变得庞大复杂时,一个文件中堆积的代码会显得不够清晰和易于维护。这时,将代码按照功能和责任进行分文件编写是一个很好的选择。

下面以C++为例,介绍类的分文件编写的方法。


一、没分文件之前的代码展示:

这是一个创建了Circle类和Point类并判断电鱼元的关系的实例:

#include<iostream>
using namespace std;

class Point
{
private:
    double p_x;
    double p_y;

public:
    void setPoint(double x, double y) {
        p_x = x;
        p_y = y;
    }
    double getx()
    {
        return p_x;
    }
    double gety()
    {
        return p_y;
    }

};

class Circle
{
private:
    int r;
    Point op;

public:
    void setr(int tr)
    {
        r = tr;
    }
    void setop(double x, double y)
    {
        op.setPoint(x, y);
    }
    int getr() {
        return r;
    }
    double getop_x() {
        return op.getx();
    }
    double getop_y() {
        return op.gety();
    }
};

void JudgePosition(Circle c, Point p) {
    double distance = (c.getop_x() - p.getx()) * (c.getop_x() - p.getx()) + 
        (c.getop_y() - p.gety()) * (c.getop_y() - p.gety());
    double r2 = c.getr() * c.getr();

    if (distance > r2)
        cout << "点在圆外" << endl;
    if (distance < r2)
        cout << "点在圆内" << endl;
    if (distance == r2)
        cout << "点在圆上" << endl;
}

int main() {
    Circle c1;
    c1.setr(10);
    c1.setop(10,10);

    Point p1;
    p1.setPoint(10,0);

    JudgePosition(c1, p1);
}

二、分文件编写步骤:

在C++中,一个类的定义通常需要分为两个文件:头文件(.h或.hpp)和源文件(.cpp)。

1.头文件的编写:

头文件包含类的声明和公共接口,它描述了类的成员变量和成员函数,并提供了其他文件使用该类的必要信息。头文件通常具有以下结构:

  • Point.h:
#pragma once//防止头文件重复包含
class Point
{
private:
    double p_x;
    double p_y;

public:
    void setPoint(double x, double y);
    double getx();
    double gety();
};
  • Circle.h:
#pragma once// 防止头文件重复包含
#include"Point.h"
class Circle
{
private:
    int r;
    Point op;

public:
    void setr(int tr);
    void setop(double x, double y);
    int getr();
    double getop_x();
    double getop_y();
};

2.源文件的编写:

源文件包含类成员函数的具体实现。它可以包含类的私有成员变量,以及实现类的构造函数、析构函数和其他成员函数等。源文件的命名通常与头文件相同,但使用.cpp作为文件扩展名。注意引用头文件。

注意:需要告诉编译器这些函数是在某对象的作用域下:

函数类型 类名:: 函数名()
{

}

  • Point.h:
#include"Point.h"

void Point::setPoint(double x, double y) {
    p_x = x;
    p_y = y;
}
double Point::getx()
{
    return p_x;
}
double Point::gety()
{
    return p_y;
}
  • Circle.h:
#include"Circle.h"

    void Circle::setr(int tr)
    {
        r = tr;
    }
    void Circle::setop(double x, double y)
    {
        op.setPoint(x, y);
    }
    int Circle::getr() {
        return r;
    }
    double Circle::getop_x() {
        return op.getx();
    }
    double Circle::getop_y() {
        return op.gety();
    }

3.主入口文件的编写:

#include<iostream>
using namespace std;
#include"Circle.h"
#include"Point.h"

void JudgePosition(Circle c, Point p) {
    double distance = (c.getop_x() - p.getx()) * (c.getop_x() - p.getx()) + 
        (c.getop_y() - p.gety()) * (c.getop_y() - p.gety());
    double r2 = c.getr() * c.getr();

    if (distance > r2)
        cout << "点在圆外" << endl;
    if (distance < r2)
        cout << "点在圆内" << endl;
    if (distance == r2)
        cout << "点在圆上" << endl;
}

int main() {
    Circle c1;
    c1.setr(10);
    c1.setop(10,10);

    Point p1;
    p1.setPoint(10,20);

    JudgePosition(c1, p1);
}

总结:

类的分文件编写是一种常用的软件开发技术,适用于提高代码的可维护性和可扩展性。通过将类的声明和定义分别放在头文件和源文件中,我们可以更好地组织和管理代码。在实际开发中,合理使用类的分文件编写方法,将能让代码更加清晰、易于维护和扩展。

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇