小编眠りネ*_*ネロク的帖子

为什么调用复制构造函数而不是移动构造函数?

我有以下代码:

#include <bits/stdc++.h>

using namespace std;

class A {
public:
    A(const A& a) noexcept { cout << "copy constructor" << endl; }
    A& operator=(const A& a) noexcept { cout << "copy assignment operator" << endl; }
    A(A&& a) noexcept { cout << "move constructor" << endl; }
    A& operator=(A&& a) noexcept { cout << "move assignment operator" << endl; }
    A() { cout << "default constructor" << endl; }
};

vector<A> aList;

void AddData(const A&& a)
{
    aList.push_back(std::move(a));
}

int …
Run Code Online (Sandbox Code Playgroud)

c++ copy-constructor move-constructor move-semantics c++11

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

反向循环崩溃

所以我有这个代码,它崩溃了xcode

void strrev(const std::string& str)
{
    for(size_t i=str.length();i>=0;i--)
    {
        std::cout << str[i];
    }
}
Run Code Online (Sandbox Code Playgroud)

如果我这样做它工作正常,i>0但第一个字符没有打印任何有关错误的建议i>=0

c++ c++11

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

汇编语言 - 为什么字符存储在小端?

我是汇编语言的新手.我正在尝试下面的代码,你可以看到下面的代码.

bits 64
global _start
section .text
_start:

        mov rcx, 1234567890
        xor rcx, rcx
        mov rcx, 'wxyz'

        mov rax, 60
        mov rdi, 0 
        syscall
Run Code Online (Sandbox Code Playgroud)

我想知道为什么数字在寄存器中存储为Big endian,字符作为Little-endian存储在寄存器中

屏幕截图来自调试器. 在此输入图像描述

在此输入图像描述

我以为只在内存中,数据存储为Little endian.但我不明白为什么字符在寄存器中存储为Little endian.请告诉我.

谢谢.

assembly x86-64 endianness

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

计算数据类中所有元素的数量

需要统计组件gui中的所有按钮。无法理解使用此数据对象的正确方法

data Component = TextBox {name :: String, text :: String}
                | Button {name :: String, value :: String}
                | Container {name :: String, children :: [Component]}

gui :: Component 
gui = Container "My App" [
        Container "Menu" [
          Button "btn_new" "New",
          Button "btn_open" "Open",
          Button "btn_close" "Close"
        ],
        Container "Body" [TextBox "textbox_1" "Some text does here"],
        Container "Footer" []]


countButtons :: Component -> Int
countButtons (TextBox []) = 0 
countButtons (Container _ Button) = 1 + countButtons Container
Run Code Online (Sandbox Code Playgroud)

haskell

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

如何在C中实现重复char的函数?

我有这个功能让我很难过:

char * repeat_char(const char c, const int times, char *result) {

   for (int i = 0; i < times; i++) {
      *(result + i) = c;
   }

   return result;
}
Run Code Online (Sandbox Code Playgroud)

你可能会告诉我我正在尝试重复这些c times时间并将结果存储在字符串中result(char指针).

我这样调用它:

char *result = "";
repeat_char('o', 3, result); // hoping for "ooo"
Run Code Online (Sandbox Code Playgroud)

但我得到的只是一个令人讨厌的:

RUN FINISHED; Segmentation fault; core dumped; real time: 160ms; user: 0ms; system: 0ms
Run Code Online (Sandbox Code Playgroud)

我真的很困惑.任何人?谢谢

c

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

使用带一个参数函数的递归求数字的平方

下面是一个(平凡的)C++ 函数,它返回其参数的平方(一个非负整数):

unsigned int square(unsigned int n) {
    return n*n;
}
Run Code Online (Sandbox Code Playgroud)

你的工作:编写一个函数,它也返回 n 2但有以下约束:

  • 您不能使用乘法运算符 *
  • 您不能使用除法运算符 /
  • 你不能有任何循环
  • 您不能向函数添加任何其他参数
  • 你的函数必须是自包含的:没有辅助函数!
  • 您不能使用任何全局变量
  • 您不能使用任何静态变量
  • 您不能使用任何“位旋转”操作——没有移位等。

然而, …

  • 您可以使用递归
  • 您可以使用+-运算符。

到目前为止,我已经尝试使用 n(n+n+n+...) 来获得平方,但是为此我需要一些可以跟踪递归循环的东西,但是因为该函数只能有一个参数,所以我需要另一种方法来解决这个问题。

c++ algorithm recursion

-5
推荐指数
1
解决办法
3630
查看次数