【问题标题】:Where should I put the const keyword? [duplicate]我应该把 const 关键字放在哪里? [复制]
【发布时间】:2021-06-17 21:12:41
【问题描述】:

看看下面的源码:

#include <iostream>
#include <string>

#ifndef _PATIENT_H_
#define _PATIENT_H_

#include "Base.cpp"

class Patient: public Base
{
private:
    std::string name_;
    std::string date_of_birth_;
    std::string sex_;
public:
    void set_name(std::string & name)
    {
        name_ = name;
    }
    std::string get_name() const
    {
        return name_;
    }
    void set_date_of_birth(std::string & date_of_birth)
    {
        date_of_birth_ = date_of_birth;
    }
    std::string get_date_of_birth() const
    {
        return date_of_birth_;
    }
    void set_sex(std::string & sex)
    {
        sex_ = sex;
    }
    std::string get_sex() const
    {
        return sex_;
    }
};
#endif

我有两个问题:

  1. 应该#include &lt;iostream&gt;#include &lt;string&gt;#define _PATIENT_H_ 里面吗?
  2. 在setter访问器中,const关键字应该怎么写:
    一种。 void set_name(const std::string &amp; name)
    湾。 void set_name(std::string const &amp; name)

?

【问题讨论】:

  • 1:是,2:你更喜欢哪个。
  • 仅供参考,#include "Base.cpp" - 预处理 - 包括 anything .cpp 是代码异味。那里应该有一个 Base.h,以及正确的构建步骤来构建 Base.cpp 以及您正在构建的任何其他内容。
  • 1.是的。 2. 与我合作的大多数开发人员都是 Const West(const 出现在最前面),但我与之合作的一小部分开发人员更喜欢 East Const( const 在类型之后)。在给定的代码中,编译器无关紧要。哪个更易读。
  • 病人类中没有任何东西使用来自 iostream 的任何东西。不要包括你不使用的东西。对于任何精通 C++ 的程序员来说,包含 Base.cpp 似乎都是可疑的。
  • @StoryTeller-UnslanderMonica • 我更新了我的评论以反映我的限定词的来源。我在East Const阵营。

标签: c++ reference constants


【解决方案1】:
  1. 没关系,但我更喜欢将包含保护作为文件中的第一件事。原因是:

    • 当您多次包含文件时,预处理器必须做的事情更少。

    • 预处理器可以将其识别为经典的包含保护,并以优化的方式处理它。

    • 它更常见,如果您有很多 #includes,它更容易被注意到。

  2. 没关系。 const std::string 更传统,但有些人使用 std::string const 声称它更易于阅读。

并且强制提醒不要包含.cpp 文件。

【讨论】:

    猜你喜欢
    • 2020-09-30
    • 1970-01-01
    • 1970-01-01
    • 2011-05-20
    • 2016-08-25
    • 2013-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多