相关疑难解决方法(0)

'const&'在C++中意味着什么?

为此道歉,我是一名学生正在努力学习C++,我只是觉得如果我问这个问题并且对此有很多正确的看法会更好,所以我很抱歉提出愚蠢的问题.我只是觉得问题比不知道更好.

我分别理解地址运算符&和const关键字的含义.但是,当我在阅读某个地方的示例代码时,我看到const&使用了,只是想要暗示的是什么?

它用于代替函数原型中的参数,例如:

void function (type_Name const&);
Run Code Online (Sandbox Code Playgroud)

如果只使用其中一个我会理解,但我在这里有点困惑所以一些专业的见解会很棒.

c++ const operators

12
推荐指数
2
解决办法
2万
查看次数

C++对象:我应该何时使用指针或引用

我可以使用一个对象作为它的指针或它的引用.我知道不同之处在于必须手动删除指针,并且引用仍然存在,直到它们超出范围.

我什么时候应该使用它们?有什么实际区别?

这些问题都没有回答我的疑虑:

c++ pointers reference

10
推荐指数
2
解决办法
4624
查看次数

引用是在内存中创建新位置,还是在现有单元格中创建别名?

我正在学习指针和参考,我的问题涉及这个解释,特别是以下部分:

这表明声明int& ri = i创建了一个新的内存单元格,其值为&i并存在于未知的内存位置.

为了测试这个理论,我写了一个简单的案例,结果如下所示:

在此输入图像描述

我感到困惑的是,r并且i具有相同的内存地址,这似乎与读数相矛盾.结果表明,int& ri = i松散意味着"为内存单元创建一个别名i并调用它r",这样两者都指向完全相同的单元格.

文件是否正确,或者我错过了什么?

c++ pointers reference

9
推荐指数
2
解决办法
1578
查看次数

在C++中使用引用的规则

可能重复:
如何将对象传递给C++中的函数?
为什么传递const引用而不是值?

在C++中是否有一种规则或指导,当一个必须或至少应该选择使用引用传递而不是值时?

如果知道(小老实说)对象的大小与某个对象有关,则很难判断.

c++

8
推荐指数
1
解决办法
683
查看次数

通过引用调用vs Pointer参数

可能重复:
FAQ:如何将对象传递给C++中的函数?
指针与参考

大家好,
在c/c ++中,我们可以通过引用传递对象或传递对象的指针.
例如:
我想创建一个函数,它将字符串向量作为输入,并输出一个包含每个字符串的值的映射.函数的返回值是bool,表示成功或失败.

功能(按参考调用)

bool calculateSomeValue( vector<string> input, map<string, double>& result)
{
//// bla bla bla
return true/false;
}

功能(使用指针)

bool calculateSomeValue( vector<string> input, map<string, double>* result)
{
//// bla bla bla
return true/false;
}

哪一个最好?有没有人知道这两种选择的利弊?

提前致谢.

c++

7
推荐指数
1
解决办法
1万
查看次数

C++"最佳"参数传递方法

我今天正在编写一个C++类,我编写了一个函数,它将参数作为参考而不是指针,这是我很少做的事情.我总是通过指针传递.所以我准备改回来,然后我意识到 - 我不知道我是否应该,或者它是否重要.

所以我转向你们.我有三种传递参数的方法:

//1: By pointer
Object* foo(Object* bar) {...}

//2: By reference
Object& foo(Object& bar) {...}

//3: By value (just for completeness)
Object foo(Object bar) {...}
Run Code Online (Sandbox Code Playgroud)

假设#3出于性能原因(是的,我知道编译器已经相当好,但仍然如此),其他两个或多或少相当.

那么:什么是"最好的"方法?指针?参考文献?两者的某种组合?或者甚至重要吗?技术原因是最好的,但风格的原因同样好.

更新: 我接受了YeenFei的答案,因为它处理了为我提供的差异(即使我然后明确地忽略了他的建议 - 我喜欢将NULL作为选项......).但每个人都提出了很好的观点 - 特别是GMan(在评论中)和Nemo,在回答性能和价值传递的过程中.如果您在这里寻求答案,请检查所有答案!

c++ performance coding-style parameter-passing

7
推荐指数
1
解决办法
3736
查看次数

避免非常量引用参数

我遇到了这个输出参数约定,它更喜欢指针而不是引用。

“在函数参数列表中,所有引用都必须是常量:

void Foo(const string &in, string *out);

事实上,在 Google 代码中,输入参数是值或常量引用,而输出参数是指针,这是一个非常强大的约定。输入参数可以是const 指针,但我们绝不允许非常量引用参数,除非约定需要,例如swap()。”

这似乎与这个问题的公认答案有些不同,后者说应该使用引用来代替,除非该函数涉及一些指针算术。

所以我想知道这input param is const reference, output param is pointer是否只是谷歌风格的问题,还是一种更普遍接受的做法(以避免非常量引用参数)。

c++

7
推荐指数
1
解决办法
7885
查看次数

std :: optional和polymorphism

我在许多帖子中读过Stack Overflow,当使用指针(用于参数或返回值)并且nullptr允许(使其成为可选)时,通常最好使用std::optional.

但是,如果指针指的是多态类型怎么办?最好使用std::optional还是指针?

c++ optional

7
推荐指数
1
解决办法
851
查看次数

使用C++中的指针调用函数

非常简单,我正在重新学习C++,而且我正在指点.我理解基本概念,但我遇到了一些麻烦.调用此函数的语法是什么?

void getTime(int& hours, int& minutes, int& seconds) const
{
    hours = hr;
    minutes = min;
    seconds = sec;
}
Run Code Online (Sandbox Code Playgroud)

正如您可能已经猜到的那样,函数的关键是将小时,分钟和秒的时间返回到位于函数调用所在范围内的三个指针.假设已经定义了hr,min和sec .

此外,如果有人想详细说明指针(特别是何时使用&何时使用*),将非常感激.预先感谢.

c++ pointers

2
推荐指数
1
解决办法
1468
查看次数

使用指针和引用获取对象

让我们假设我们有一个statically(Type mObject;)创建的对象,它通过使用getObject()方法向程序员公开.我想知道以这种方式获取对象有哪些优点和缺点?

Type* SomeClass::getObject() {
    return &mObject;
}

// the programmer types
Type* obj = someClassObj.getObject();
obj->someMethod();
Run Code Online (Sandbox Code Playgroud)

这样:

Type& SomeClass::getObject() {
    return mObject;
}

// the programmer types
Type& obj = someClassObj.getObject();
obj.someMethod();
Run Code Online (Sandbox Code Playgroud)

c++

2
推荐指数
1
解决办法
125
查看次数

向量和函数练习

我有一个关于这个程序的问题。我是编程和 C++ 的初学者,我试图弄清楚两件事。

  1. 为什么这个程序没有编译(错误:使用未初始化的内存“总计” - 我将它定义为一个变量??)。

  2. 有人能解释一下 main ( sumUpTo)之外的函数是如何工作的吗?具体& vec和total,因为我从来没有见过他们。谢谢。

/* 1) read in numbers from user input, into vector    -DONE
    2) Include a prompt for user to choose to stop inputting numbers - DONE
    3) ask user how many nums they want to sum from vector -
    4) print the sum of the first (e.g. 3 if user chooses) elements in vector.*/

#include <iostream>
#include <string>
#include <vector>
#include <numeric> //for accumulate

int …
Run Code Online (Sandbox Code Playgroud)

c++ stdvector c++-standard-library

1
推荐指数
1
解决办法
77
查看次数