【问题标题】:Parameter to a function in C++ [duplicate]C ++中函数的参数[重复]
【发布时间】:2012-08-03 09:07:21
【问题描述】:

可能重复:
const CFoo &bar() const

这行是什么意思?

virtual void Encode (KDataStream & stream) const;

C++ 中的 const 是什么意思?

【问题讨论】:

    标签: c++ parameters virtual


    【解决方案1】:

    这行是什么意思?

    virtual void Encode (KDataStream & stream) const;
    

    这是一个声明函数的语句。

    virtual 表示它是一个成员函数,可以被同名的函数覆盖,并且在派生自该类的类中声明的兼容参数和返回类型。将根据调用它的对象的类型选择正确的版本(在运行时,如有必要)。

    void 表示它不返回任何内容。

    Encode 是函数的名称。

    ( 标志着参数列表的开始。

    KDataStream是第一个参数的类型。

    &表示参数通过引用传递。

    stream 是赋予参数的名称;它用作文档,但可以在不改变含义的情况下被排除在声明之外。

    ) 标志着参数列表的结束。

    const 表示它是一个成员函数,不能修改它所调用对象的非静态、非可变数据成员。它还允许在声明为 const 的对象上调用它。

    ; 标志着语句的结束。

    【讨论】:

      【解决方案2】:

      意思是——pass by reference

      【讨论】:

      • 问题是关于尾随const的含义。
      • 这个人 [dani] 改变了问题。如您所见,第二个答案说“这是一个参考变量”。
      【解决方案3】:

      方法末尾的'const'表示方法实现不会改变任何成员变量的值。因此,通过在类接口本身中看到这一点(不必知道实现),对象的客户端就可以知道这种行为。

      【讨论】:

        【解决方案4】:

        阅读指针,如果你想用 c++ 编写代码,你需要知道它们是如何工作的:

        http://www.cplusplus.com/doc/tutorial/pointers/

        & 表示你传入的是流的内存地址而不是流的值

        【讨论】:

        • 说真的,你有没有读过这个问题?这很遥远,完全具有误导性,并且带有指向可怕教程的链接。
        • 问题改了
        • 即使没有改变问题,这仍然是非常错误的。
        • @EamonnMcEvoy:问题中的任何内容都与指针无关。在声明(如问题中)中使用& 来声明引用与在表达式(如您的链接中)中使用它来获取对象的地址完全不同。
        • @MikeSeymour 感谢您指出这一点,我没有意识到有区别。 stackoverflow.com/questions/114180/pointer-vs-reference
        猜你喜欢
        • 1970-01-01
        • 2012-06-14
        • 1970-01-01
        • 2013-02-19
        • 1970-01-01
        • 2012-11-19
        • 1970-01-01
        • 2021-11-16
        • 1970-01-01
        相关资源
        最近更新 更多