C++ 执行小型、非常专业任务的方法应该放在哪里?
在过去的几次快速编码挑战中,这个问题一直困扰着我 我有一个名为沙漏的类,它在构造函数中使用表示大写字母的C++ 执行小型、非常专业任务的方法应该放在哪里?,c++,oop,C++,Oop,在过去的几次快速编码挑战中,这个问题一直困扰着我 我有一个名为沙漏的类,它在构造函数中使用表示大写字母的char(例如“D”),并有一个方法print(),该方法打印如下内容: AAAAAAA BBBBB CCC D CCC BBBBB AAAAAAA void Hourglass::print() const { final int centreCol = (mFinalChar - 'A'); for(char c = 'A'; c <= mFin
char
(例如“D”),并有一个方法print()
,该方法打印如下内容:
AAAAAAA
BBBBB
CCC
D
CCC
BBBBB
AAAAAAA
void Hourglass::print() const
{
final int centreCol = (mFinalChar - 'A');
for(char c = 'A'; c <= mFinalChar; ++c) {
std::cout << computeLine(centreCol, c - 'A', c) << std::endl;
}
for (char c = mFinalChar - 1; c >= 'A'; --c) {
std::cout << computeLine(centreCol, c - 'A', c) << std::endl;
}
}
打印看起来像:
AAAAAAA
BBBBB
CCC
D
CCC
BBBBB
AAAAAAA
void Hourglass::print() const
{
final int centreCol = (mFinalChar - 'A');
for(char c = 'A'; c <= mFinalChar; ++c) {
std::cout << computeLine(centreCol, c - 'A', c) << std::endl;
}
for (char c = mFinalChar - 1; c >= 'A'; --c) {
std::cout << computeLine(centreCol, c - 'A', c) << std::endl;
}
}
computeLine()
应该在哪里?它是否应该是类的私有成员(它不需要对象中包含的任何信息)?它应该位于类之外的匿名命名空间中吗?我是否应该以某种方式避免这种方法
我知道这可能是一个有点固执己见的话题,但我确信至少有一些争论可以让我下定决心。“它应该在类外的匿名命名空间中吗?”我会选择这个选项。但是你的问题没有简单的回答,很可能会得到自以为是的答案。我会惊讶地看到
Hourglass
类并发现这样一个私有成员函数。因此,我将它放在类之外。如果<代码>计算行< /COD>只从该代码>打印< /COD>函数内调用,则考虑一个匿名的lambda作用于该函数。如果它仅由同一个类的其他函数调用,则可以声明为“代码>私有< /代码>。如果它仅由继承类的其他函数调用,则可以声明它受保护。如果它不需要包含在对象中的任何信息,那么可以声明它为static
“它是否应该在类之外的匿名命名空间中?”我会选择此选项。但是你的问题没有简单的回答,很可能会得到自以为是的答案。我会惊讶地看到Hourglass
类并发现这样一个私有成员函数。因此,我将它放在类之外。如果<代码>计算行< /COD>只从该代码>打印< /COD>函数内调用,则考虑一个匿名的lambda作用于该函数。如果它仅由同一个类的其他函数调用,则可以声明为“代码>私有< /代码>。如果它仅由继承类的其他函数调用,则可以声明它受保护。如果它不需要包含在对象中的任何信息,那么可以将其声明为static
。