小编Joh*_*son的帖子

为什么传递值而不是const引用?

由于const引用与传递值几乎相同,但没有创建副本(据我所知).那么是否需要创建变量的副本(因此我们需要使用pass by value).

c++ arguments const function

9
推荐指数
3
解决办法
3627
查看次数

未按顺序执行的功能

我的功能有这个问题.

在main函数中我有这个result(param, param)函数,它有2个函数作为参数.

result(name(), score());
Run Code Online (Sandbox Code Playgroud)

但是,当代码执行时,score()函数首先执行而不是函数执行name().为什么会这样呢?

(还有一个问题是由score()函数首先执行而不是函数执行的name()是我得到了\n读取并且name()函数被完全跳过.但是我知道如何解决这个问题我只需要知道为什么不name()执行该函数首先.)

我在这里找到了这个:http://en.cppreference.com/w/cpp/language/eval_order.

任何C++运算符的操作数的评估顺序,包括函数调用表达式中函数参数的评估顺序,以及任何表达式中子表达式的评估顺序都是未指定的(除非另有说明).编译器将以任何顺序对它们进行评估,并且可以在再次评估相同表达式时选择另一个顺序.

在C++中没有从左到右或从右到左评估的概念,不要将操作符的从左到右和从右到左的关联性混淆:表达式f1() + f2() + f3()被解析为(f1() + f2()) + f3()左边的运算符+的右对称关系,但是对f3的函数调用可以在运行时的第一个,最后一个或之间f1()或之间进行评估f2().**

但我的程序总是score()首先执行该功能.在它上面说它是随机的所以我至少应该name()首先执行函数有时是正确的吗?

完整代码可供参考.

#include <iostream>
#include <string>

using namespace std;

string name()
{
    string fname;
    cout << "Please type your full name: ";
    getline(cin, fname);
    return fname;
}

int score()
{
    int points; …
Run Code Online (Sandbox Code Playgroud)

c++ function

-2
推荐指数
2
解决办法
101
查看次数

标签 统计

c++ ×2

function ×2

arguments ×1

const ×1