gpt4 book ai didi

C++ 类访问说明符详细程度

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:07:48 25 4
gpt4 key购买 nike

“传统的”C++ 类(只是一些随机声明)可能类似于以下内容:

class Foo
{
public:
Foo();
explicit Foo(const std::string&);
~Foo();

enum FooState
{
Idle, Busy, Unknown
};

FooState GetState() const;
bool GetBar() const;
void SetBaz(int);

private:
struct FooPartialImpl;

void HelperFunction1();
void HelperFunction2();
void HelperFunction3();

FooPartialImpl* m_impl; // smart ptr
FooState m_state;
bool m_bar;
int m_baz;
};

如果原始程序员没有整齐地组织他的“访问区域”,我总是发现这种类型的访问级别规范很丑陋并且难以遵循。


以 Java/C# 风格查看相同的片段,我们得到:

class Foo
{
public: Foo();
public: explicit Foo(const std::string&);
public: ~Foo();

public: enum FooState
{
Idle, Busy, Unknown
};

public: FooState GetState() const;
public: bool GetBar() const;
public: void SetBaz(int);

private: struct FooPartialImpl;

private: void HelperFunction1();
private: void HelperFunction2();
private: void HelperFunction3();

private: FooPartialImpl* m_impl; // smart ptr
private: FooState m_state;
private: bool m_bar;
private: int m_baz;
};

在我看来,这在标题中更容易阅读,因为访问说明符就在目标旁边,而不是一堆行。当使用没有分隔成通常的“*.hpp/*.inl”对的仅 header 模板代码时,我发现这一点尤其正确。在那种情况下,函数实现的规模压倒了这一小而重要的信息。


我的问题很简单,源于我从未见过其他人在他们的 C++ 代码中主动这样做的事实。

假设我没有支持“类 View ”的 IDE,使用这种冗长级别是否有任何明显的缺点?

欢迎任何其他样式推荐!

最佳答案

“身在罗马,入乡随俗。”

我在 Java 上花了很多时间,喜欢为每个字段和方法分别指定访问说明符的风格。但是,当我使用 C++ 进行编程时,我总是使用您的第一个代码片段中显示的样式。

关于C++ 类访问说明符详细程度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2616155/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com