小编bks*_*bks的帖子

为什么复制赋值运算符必须返回引用/ const引用?

在C++中,我不清楚从复制赋值运算符返回引用的概念.为什么复制赋值运算符不能返回新对象的副本?另外,如果我上课A,还有以下内容:

A a1(param);
A a2 = a1;
A a3;

a3 = a2; //<--- this is the problematic line
Run Code Online (Sandbox Code Playgroud)

operator=定义如下:

A A::operator=(const A& a)
{
    if (this == &a)
    {
        return *this;
    }
    param = a.param;
    return *this;
}
Run Code Online (Sandbox Code Playgroud)

c++ operator-overloading copy-constructor assignment-operator

62
推荐指数
4
解决办法
4万
查看次数

代码的时间复杂度分析

int foo(int n) 
{
    int x=2;
    while (x<n)
    {
        x = x*x*x;
    }

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

我需要分析它的时间复杂性.我注意到它n的速度远远超过了log(n).我的意思是,它做的步骤比做的少O(log(n)).我读了答案,但不知道他们是怎么做到的:确实如此O(log(log(n)).现在,你如何处理这样的问题?

c time-complexity

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

(++ i)和(i ++)之间的区别

在C++中我理解(++i)应该返回引用i因为需要连接运算符,但我无法弄清楚的是:

为什么(i++)要按i价值回报?

任何人都可以澄清一下.

c++ operator-overloading

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

如何在头文件中声明类型转换并在cpp文件中实现?

它对我不起作用.
我有一个头文件和一个cpp文件.
需要在我的类中定义转换运算符到INT,但在H文件中声明它并在cpp文件中实现时,它会给我"语法错误".也许我的语法错了?在H文件中我有"公共":

operator int();
Run Code Online (Sandbox Code Playgroud)

在cpp文件中我有:

A::operator int() { return mNumber ;}
Run Code Online (Sandbox Code Playgroud)

如果我在H文件中实现它的功能,但我不想这样做.
有人可以帮忙吗?

c++ operator-overloading

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

strtok不接受:char*str

当使用char*str作为第一个参数(不是分隔符字符串)时,strtok将无法正常工作.

它是否与在该表示法中分配字符串的区域有关?(据我所知,这是一个只读区域).

提前致谢

例:

//char* str ="- This, a sample string.";   // <---doesn't work
char str[] ="- This, a sample string.";   // <---works
char delims[] = " ";
char * pch;
printf ("Splitting string \"%s\" into tokens:\n",str);
pch = strtok (str,delims);
while (pch != NULL)
{
  printf ("%s\n",pch);
  pch = strtok (NULL, delims);
}
return 0;
Run Code Online (Sandbox Code Playgroud)

c string strtok

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

linux内核代码">>"运算符

我们已经获得了对Linux内核代码进行一些修改并重新编译的任务.我很难搞清楚这段代码行的作用:

p->time_slice = (current->time_slice + 1) >> 1;
Run Code Online (Sandbox Code Playgroud)

更准确地说,为什么最后有">> 1"?

c linux operating-system linux-kernel

3
推荐指数
2
解决办法
1300
查看次数

使用g ++编译c ++代码时出错

我得到这种类型的错误:
"在函数... ...的多个定义"
""......首先在这里定义"
"警告:符号的大小......从"变为"

*代码使用标志编译:-ansi -Wall -pedantic-errors -Werror
*使用STL

那有什么解释吗?
先感谢您

c++ linker stl g++

-3
推荐指数
1
解决办法
1610
查看次数