gpt4 book ai didi

c++ - 为什么认为 'T *name' 是 C 方式而 'T* name' 是 C++ 方式?

转载 作者:IT老高 更新时间:2023-10-28 22:05:47 26 4
gpt4 key购买 nike

注意:这个问题是关于星号(*)的位置。

在我看到的大多数 C 代码中(例如,在 Beej's guide to network programming 中),所有变量声明/定义都使用 T *name 格式,即将 * 绑定(bind)到变量名。指针被认为属于变量,而不是类型。

在我看到的大多数 C++ 代码中,格式是 T* name,即,它将 * 绑定(bind)到变量的类型。指针被认为属于类型,而不是变量。我自己,作为一个纯 C++ 编码器,也使用这种格式,作为一个 pointer-to-type 显然(对我来说)属于类型,而不是变量。 (顺便说一句,即使是 C++ 标准在示例中也使用这种格式。:))

这有(历史)原因吗?当程序员开始做 C++ 时,思维方式是否发生了变化?

如果 C 编码器(使用前一种格式)能够解释他/她为什么使用它,而不是后者,那也很好。

最佳答案

如果我冒险猜测,我会说这是因为 C++ 人更有可能认为类型信息本身就是一个东西,因为模板可以在编译时以编程方式操作类型。它们也不太可能在同一个声明中声明多个变量。

T* 样式将类型信息集中在一个地方并使其脱颖而出,而 T* foo, bar; 之类的东西会引入困惑如果您从不在同一语句中声明两个变量,那么使用这种语法是没有问题的。

就我个人而言,我发现 T* 风格非常讨厌并且非常不喜欢它。 * 是类型信息的一部分,这是真的,但编译器解析它的方式使其实际上附加到名称,而不是类型。我认为 T* 方式掩盖了正在发生的重要事情。

在我的观察中,我似乎在 C++ 社区中是一个稀有的人。我注意到你对最受欢迎的风格有同样的看法。

当然,要明确的是,任何一种风格都适用于任何一种语言。但我确实注意到你做的同样的事情,一种风格在 C 代码中更常见,而另一种风格在 C++ 中更常见。

关于c++ - 为什么认为 'T *name' 是 C 方式而 'T* name' 是 C++ 方式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6449997/

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