小编Kra*_*nix的帖子

使用 ++ 作为通过类成员访问语句的前缀不会导致错误

我现在有点困惑,我正在运行以下代码:

std::vector<int> test{1, 5, 10};
++test.at(1); // I'm trying to increment that number 5 to six, which works
std::cout << test.at(1) << std::endl; // Prints out 6 to the console
Run Code Online (Sandbox Code Playgroud)

我期待它给我一个编译器错误,因为正如我从运算符优先级中读到的,.(用于成员访问)和增量运算符 ( ++) 具有相同的优先级,但它们在语句中从左到右读取,从什么反正我明白了。所以在上面显示的代码中,我认为它等于 say (++test).at(1),这显然会导致编译器错误。为什么即使关联性从左到右也不是这种情况,为什么它会像这样读取它(根据我的想法)...... ++(test.at(1))?如果它们具有相同的优先级,不是吗,就像在数学中一样,例如,使用第++一个然后使用.?

c++

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

我需要一种无需返回“返回类型”即可从函数中返回的方法

我有一个分配内存然后返回指向该内存地址的指针的函数。我正在分配一个字符数组,它们传递给函数的参数将是数组大小。现在的问题是,如果它们0作为要动态分配的大小的参数传递,那么我想退出/返回该函数,但该函数本身返回 achar *所以我无法做类似的事情return -1;,我该怎么办围绕这一点,同时保留功能并执行逻辑以在那里分配内存?有办法吗?

char *alloate_memory(int x) { // This will assume you are allocating memory for a C-style string
    if (x == 0)
        return ;
    char *mem{ new char[x] };
    return mem;
}
Run Code Online (Sandbox Code Playgroud)

c++ return

6
推荐指数
3
解决办法
158
查看次数

标签 统计

c++ ×2

return ×1