【问题标题】:C++ Parameter passing for class constructor (reference)类构造函数的 C++ 参数传递(参考)
【发布时间】:2014-06-09 06:51:10
【问题描述】:

有什么区别:

classConstructor(const std::string theName);

classConstructor(const std::string& theName);

由于构造函数只是初始化一个成员,这两个语句有什么区别吗?

【问题讨论】:

    标签: c++ reference parameter-passing


    【解决方案1】:

    当您在变量名前使用“&”字符时,这意味着该变量将与传入的参数相同。当我说同样的话,我的意思是,在记忆中。有点像解引用的指针。

    这只是一个优化。您将使用相同的内存空间,而不是仅为您的构造函数在内存中创建一个新变量。在这里使用一个简单的字符串,差异可以忽略不计,但想象一下使用一个巨大的对象向量(例如)。

    有时将它用作 C 中的指针很有用。您可以在另一个函数中修改变量而无需传递指针。

    最后,这被称为“参考”;)

    希望你能得到帮助;)

    【讨论】:

    • 如果我最初传入一个字符串而不将其存储到变量位置怎么办?那么这两种说法有没有区别呢?
    • 你的意思是这样的,例如:int function_test(const std::string & str) {do some stuff} 你称之为谎言:function_test("String test") 如果是的话,它可以工作,因为即使你没有在变量中设置它,你的字符串也会在某处的内存中创建。在这种情况下,它只是一个简单的优化;)。但它仍然有效;)
    猜你喜欢
    • 1970-01-01
    • 2015-10-11
    • 1970-01-01
    • 2014-12-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-08
    相关资源
    最近更新 更多