C++哪里写一个类的函数? [关闭]

Posted

技术标签:

【中文标题】C++哪里写一个类的函数? [关闭]【英文标题】:C++ where to write functions of a class? [closed] 【发布时间】:2020-06-03 19:05:35 【问题描述】:

在我的 C++ 项目中,我有 2 个文件:trip.h trip.cpp

    如果我想编写一个辅助函数,它接受两个整数并返回它们的乘法,我应该在哪里编写它以及如何编写(常量、静态等...)?注意:当我们将其声明为静态时,我不希望用户能够像在 C 语言中那样使用它。

    如果函数需要访问私有成员,我们将其声明为类中的友元。 但是,我应该在 .h 文件的类之外再次写它的标题并将其定义写在 .cpp 文件中吗?注意:我被要求使其成为一个外部函数,这意味着在课堂之外编写。

编辑:我想要上述确切问题的答案,我知道我可以按照建议通过不同的方式解决这个问题,但我想坚持这种方法

【问题讨论】:

简短的问题 - 如果您需要访问私有成员,为什么不将 getter/setter 添加到您的类?或者如果需要,继承是否有意义?每次我需要使用friend时都觉得很脏...声明一个标头extern "C" 一般会允许C访问。 @MichaelDorgan 我不想用那个,我问的是我上面的具体问题,谢谢理解 所以你想要一种方法来打破类数据隐藏以允许其他人从外部函数访问内部数据?那为什么还要麻烦 C++。如果您想要文件范围函数,请声明静态并且不要在标头中包含原型。没有其他模块能够以这种方式看到您的功能。对于第 2 部分,我将把它留给其他人来回答,因为这违背了许多最佳编码实践。也许您受到需要修补的现有旧代码的限制?拥有这些信息将有助于其他人回答您的下一个问题。 这不是我想要的,我要隐藏数据,,, 1.您可以像在 C 中一样在 .cpp 文件中定义静态函数(但不能在 .h 中声明它)。另一种方法是使用 unnamed namespace。 2.不,类里面的声明就够了。考虑使用免费函数(不是朋友)并在您的类中添加一些访问器,而不是。 wandbox.org/permlink/kcHUjuY6TOWeCFvV 【参考方案1】:

    我会将trip.cpp 中的函数声明并实现为静态 函数。 C++ 与 C 向后兼容,因此 C 中的任何内容都适用。如您所知,声明函数静态限制是对该目标文件的可见性。

    我会为该类使用 static private 方法。 Static 这里的意思与#1 不同——新的意思是它可以在不关联到它所声明的类的任何实例的情况下被调用。 私有意味着它可以调用该类的私有方法(前提是它首先具有对象句柄)。如果函数相对较短,我会在 .h 文件中实现它——尽管许多人更喜欢在 .cpp 文件中实现它。

【讨论】:

以上是关于C++哪里写一个类的函数? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

C++ FindWindow函数使用

c++ 类的复制函数

字符串函数不返回字符串? c++ [关闭]

同一类的一个对象如何在 c++ 中分配给同一类的另一个对象? [关闭]

c++ 之 内存模型:对象篇

C++之中this指针与类的六个默认函数小结