【问题标题】:Prefered way to declare pointer/reference variables?声明指针/引用变量的首选方式?
【发布时间】:2011-07-26 05:25:49
【问题描述】:

注意:我使用的是 g++ 编译器(我听说它非常好,应该非常接近标准)。

不是试图引发语法大战,只是一个随机问题......声明指针的理想方式是什么?

int* pI = 4;
int *pI = 4;

(或者我最喜欢的,我知道它不漂亮,但我喜欢它):

int*pI = 4;

同样的问题代表参考:

int& rI = 4;
int &rI = 4;

int&rI = 4;

也许没有正确的答案。同样,我是否应该关心一个常量整数是否被声明为:

const int I = 4;

int const I = 4;

我不关心也没关系...

我确实喜欢通过在最后一个括号后面加上一个 const 来声明 const 函数的方式。

而且我相信常量函数比类似的非常量函数具有不同的函数签名(即常量是函数签名的一部分,不像大多数消息来源说它只取决于参数类型和返回类型)。

这是对的吗?我应该关心吗?

【问题讨论】:

    标签: c++ pointers reference declaration


    【解决方案1】:

    我更喜欢

    int* a;
    int& b;
    

    原因如下:类型是 int* 而不是 int。对我来说 - 类型属于一起,需要与名称分开。我知道这会带来一些问题

    int* a, b;
    

    但这就是为什么我不在一行中声明变量的原因。

    除此之外 - 就像 VJo 所说:坚持编码标准。如果您周围的每个人都这样做,请不要这样做。

    【讨论】:

      【解决方案2】:

      编码标准可能会告诉您如何声明或定义变量。 除此之外,使用更适合您的。

      【讨论】:

        【解决方案3】:

        而且我相信常量函数与类似的非常量函数相比具有不同的函数签名(即,常量是函数签名的一部分,不像大多数消息来源说它只取决于参数类型和返回类型)。

        一个常量函数有一个关键字const,它附加在它的末尾。

        int doSomething() const;
        

        这意味着该函数不会改变类的状态(成员)。

        在参数上提及const 意味着函数不会改变传递给函数的变量(在下面的示例中为param)的状态。

        int doSomething(const int param);
        

        在返回类型应用于函数返回的类型之前提及const

        const int doSomething();
        

        暗示函数返回一个 const 整数值。

        所以是的,您的理解是正确的。除了在最后一个括号后面放一个 const 之外,没有其他方法可以声明一个函数 const 。 另外请注意,const 成员函数只能在 const 对象上调用,而非 const 成员函数可以由 const 以及该类的非 const 对象调用。

        就声明方式而言,每个组织都有自己的编码指南,您应该坚持这一点,是的,在编译器优化或处理方面,以任何一种方式使用您提到的那些结构都没有明显的优势。只需遵循您喜欢的或您的组织希望您遵循的即可。

        【讨论】:

        • 编译器会忽略const int doSomething(); 中的constThere is no such thing 作为标量 const 右值。
        【解决方案4】:

        Bjarne Stroustrup 使用:

        int* a;
        

        所以,这对我来说已经足够了。

        【讨论】:

          猜你喜欢
          • 2021-10-17
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-02-27
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多