提问人:Johnathon 提问时间:8/19/2022 更新时间:8/19/2022 访问量:87
直接在代码中表达想法 - 定义是什么意思?
Expressing ideas directly in code - what does the definition mean?
问:
我是 c++ 的新手,我正在阅读核心指南,我遇到了这个:
P.1:直接在代码中表达想法
在这里,它说使用类似的东西来代替Month month() const;
int month();
所以我有 2 个问题,为什么函数末尾有一个常量,这有什么作用?月份是如何定义的?你能用任何名称而不是 int、double、float 等名称声明新函数吗?
提前致谢
答:
该指南的要点在于它所说的:将界面背后的想法放在代码本身中。
如果您有某种日期类型,并且它有一个成员函数,则表示您可以从该日期检索一个月的想法。据推测,返回的值表示在该日期内存储的一年中的月份。int month();
int
但。。。它如何代表月份?它是一个整数。一月份是否像(大多数语言)的长期程序员所期望的那样,给出整数 0?或者也许它被赋予整数 1,因为这就是日期的实际写法?代码本身对此只字未提;您必须查看该函数的文档才能找到答案。所以如果你看到,你不知道代码是在询问是 1 月还是 2 月。if(date.month() == 1)
另一种方法是返回类型 。现在,没有指定该类型是什么。无论它是什么,该类型都可以明确“一月”所代表的值。例如:Month month() const;
Month
enum class Month { January, February, ...};
“一月”是如何编码的?通过枚举值。因此,如果您看到 测试 ,那么它到底在说什么就很清楚了。它不仅毫不含糊,而且读起来几乎和英语一模一样:日期的月份是一月份。Month::January
if(data.month() == Month::January)
这就是在代码中表达一个想法的含义:整个想法都由代码明确地表达出来。让代码说出它在做什么,而不是它是如何做的。
评论
const
enum class Month : int {};
const
const