博客
关于我
c++名字查找和作用域的一个例子的感想
阅读量:482 次
发布时间:2019-03-06

本文共 1825 字,大约阅读时间需要 6 分钟。

如何编写并使用C++类:从文件到应用实例

在编程领域,理解类的定义与使用对于任何开发者都至关重要。本文将以实际项目为例,解析从类定义到应用实例的完整开发过程。

我们首先来探讨_test.h文件。

在_test.h文件中,类Test被定义为:

class Test {    public:      const static int sta_int = 1234;      using pos = size_t;      int big_ball = 1234;      Test() = default;      Test(int k1, int k2): i1(k1), j(k2) {};      void print() const;      void fun(Test &t);      void fun(int k);    private:      int i1;      int j;  };

这个类定义了两个私有成员变量i1和j,以及一些常规的成员函数。需要注意的是,static const整数sta_int允许在类级别上直接使用,而big_ball字段则在类范围内可用。

在setup.cc文件中,类函数被进一步实现:

void Test::print() const {    std::cout << "Test class variable: " << i1 << std::endl;    std::cout << "Global variable: " << ::i << std::endl;  }  void Test::fun(Test &t) {    if (i1 > 0) {      std::cout << "Private data sum: " << i + t.i1 << std::endl;    }    if (j > 0) {      std::cout << "Private data sum: " << j + t.j << std::endl;    }    Test::pos p1 = 111;  }

类成员函数print()和fun()实现了不同层次的功能,而fun()函数特别引入了另一个Test对象t,以显示属性整合。

在main.cc文件中,类Test被用于实际应用。

#include "test.h"  int main() {    Test t1(1, 2);    Test t2(100, 200);    Test::pos p1 = 111, p2 = 222;      t1.print();    t1.fun(t2);    t1.fun(1234);      std::cout << p1 << std::endl;    std::cout << p2 << std::endl;    std::cout << Test::sta_int << std::endl;    return 0;  }

在这段代码中,创建了两个Test对象t1和t2,使用它们的print()和fun()成员函数,并展示了如何正确调用类成员和静态常数。

当编写类编译时,需要特别注意在类inside文件中函数的前述。例如,类Test::fun()函数在文件中被定义为两个版本,一种是接受Test对象t,另一种是直接接受整数k。这是因为在不同上下文中,函数的查找顺序可能不同,但只要避免冲突即可。在设计类参数时,必须小心行事。

在整体开发中,类成员函数的查找遵循以下顺序:

  • 先在局部函数范围内查找。
  • 如果未找到,接着在类范围内查找。
  • 最后,在全局范围内查找。
  • 这种规则确保了代码的可靠性,但在类成员函数中避免使用global::关键字。

    对于开发者而言,理解类成员函数的访问方式至关重要。在类内部,可能需要使用类名::成员名来区分全局变量和类成员。在代码实现中,可能需要小心地标注作用域,以免混淆。

    如果有问题,建议通过调试工具逐个已解决方案验证变量和函数的准确性。此外,避免将大型项目代码放在一个文件中,而应按照功能模块化分歧编写。

    总结起来,从_class definition_到代码实现再到实际项目应用,理解每一个关键点对于成功完成C++项目至关重要。通过混淆实践和不断的调试,这些概念将逐渐成为你的自然 reflex。

    转载地址:http://tbvdz.baihongyu.com/

    你可能感兴趣的文章
    python利用pyshark监听网卡来抓包其中pyshark中摸索的一些可用参数
    查看>>
    python利用excel分析过杀漏失
    查看>>
    python判断汉字数目
    查看>>
    python判断文件是空的,如果是空的,就删除
    查看>>
    python判断密码是否正确_python密码判断是否符合要求的方法
    查看>>
    python判断字符串包含中文_Python 判断字符串是否包含中文
    查看>>
    python删除第一行_Python 乱码指北:一行删掉根目录
    查看>>
    Python删除列表元素的三种方法
    查看>>
    python初步学习-python数据类型-集合(set)
    查看>>
    python列表生成字典_Python中将字典转换为列表的方法
    查看>>
    python列表对应元素合并为列表及判断一个列表是几维
    查看>>
    python+flask计算机毕业设计骨科门诊患者档案管理系统(程序+开题+论文)
    查看>>
    python+flask计算机毕业设计高校体测管理系统的设计与实现(程序+开题+论文)
    查看>>
    python+flask计算机毕业设计高校体育赛事系统(程序+开题+论文)
    查看>>
    python+flask计算机毕业设计高校危化品管理系统(程序+开题+论文)
    查看>>
    python+flask计算机毕业设计高校校园线上跳蚤市场的系统设计(程序+开题+论文)
    查看>>
    python+flask计算机毕业设计高校疫情防控管理平台(程序+开题+论文)
    查看>>
    Python+Jenkins+Allure Report接口自动化测试持续集成
    查看>>
    python+locust电商全流程性能测试
    查看>>
    Python函数运行的可执行文件的终端输出如何以一般方式静音?
    查看>>