小编Tob*_*ght的帖子

当使用超过32次时,32位整数为什么不按预期工作,为什么不移位"<<"?

当我编写以下程序并使用GNU C++编译器时,1我认为输出是由编译器执行的旋转操作引起的.

#include <iostream>

int main()
{
    int a = 1;
    std::cout << (a << 32) << std::endl;

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

但从逻辑上讲,正如所说的那样,如果位溢出位宽就会丢失,输出应为0.发生了什么?

代码在ideone上,http: //ideone.com/VPTwj .

c++ bit-shift

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

C++中的运算符""是什么?

我落在这个页面上,作者谈到了运营商""标准化:

C++标准委员会标准化operator ""的决定 是[...]

他/她在说什么?我找不到任何关于这个的信息,我不明白它可能意味着什么(对于常量字符串重载?或者更概念性的东西,这不会影响语言的最终用法?)

c++ language-design operators

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

将单元测试作为正在测试的类的朋友有什么问题?

在C++中,我经常将单元测试类作为我正在测试的类的朋友.我这样做是因为我有时觉得需要为私有方法编写单元测试,或者我想要访问某个私有成员,这样我就可以更轻松地设置对象的状态,以便我可以测试它.对我来说,这有助于保持封装和抽象,因为我没有修改类的公共接口或受保护的接口.

如果我购买第三方库,我不希望它的公共接口被一堆我不需要知道的公共方法污染,因为供应商想要进行单元测试!

我也不想担心一群受保护的成员,如果我从一个类继承,我不需要知道.

这就是我说它保留抽象和封装的原因.

在我的新工作中,他们不赞成使用朋友课,甚至进行单元测试.他们说因为班级不应该"知道"关于测试的任何内容,而且你不希望课程和测试的紧密耦合.

有人可以向我解释这些理由,以便我可以更好地理解吗?我只是不明白为什么使用朋友进行单元测试很糟糕.

c++ oop unit-testing encapsulation friend

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

unique_ptr :: release()是否会调用析构函数?

这段代码是否正确?

auto v =  make_unique<int>(12);
v.release();     // is this possible?
Run Code Online (Sandbox Code Playgroud)

它等同于delete原始指针吗?

c++ unique-ptr

54
推荐指数
5
解决办法
5万
查看次数

什么是使用'\ r'转义序列?

我有这样的C代码:

#include<stdio.h>
int main()
{
    printf("Hey this is my first hello world \r");
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我使用\r转义序列作为实验.当我运行代码时,我得到的输出为:

o world
Run Code Online (Sandbox Code Playgroud)

为什么会这样,究竟有什么用\r

如果我在在线编译器中运行相同的代码,我得到的输出为:

Hey this is my first hello world
Run Code Online (Sandbox Code Playgroud)

为什么在线编译器产生不同的输出,忽略了\r

c c++ escaping carriage-return

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

如何将node.js模块作为node.js程序的子进程执行?

这是我的问题.作为node.js模块,我实现了一个执行大量计算的小脚本.因此,如果我输入"node myModule.js",它会计算一秒钟,然后返回一个值.现在,我想从我的主Node.JS程序中使用该模块.我可以将所有计算放在"doSomeCalculation"函数中然后执行:

var myModule = require("./myModule");
myModule.doSomeCalculation();
Run Code Online (Sandbox Code Playgroud)

但这会阻塞,因此它会很糟糕.我想以非阻塞的方式使用它,例如本地的数据库调用.所以我尝试使用child_process.spawn和exec,如下所示:

var spawn = require("child_process").spawn;
var ext = spawn("node ./myModule.js", function(err, stdout, stderr) { /* whatevs */ });
ext.on("exit", function() { console.log("calculation over!"); });
Run Code Online (Sandbox Code Playgroud)

但是,当然,它不起作用.我试图在myModule中使用EventEmitter,发出"calculateDone"事件并尝试在上面的示例中的"ext"变量上添加关联的侦听器.仍然无法正常工作.

至于分叉,它们并不是我想要做的.Forks需要将与计算相关的代码放在主程序中,在父进行任何操作的同时在子进行分叉,计算,然后如何返回结果?

所以这是我的问题:当计算放在Node文件中时,我可以使用子进程进行非阻塞计算,还是只是不可能?我应该在Python脚本中进行繁重的计算吗?在这两种情况下,我如何将参数传递给子进程 - 例如,图像?

nonblocking node.js

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

抽象和封装之间有什么区别?

在采访中,我被要求解释抽象和封装之间的区别.我的答案一直是这样的

  • 抽象使我们能够以最简单的方式表现复杂的现实世界.它是识别对象应具备的相关品质和行为的过程; 换句话说,表示必要的特征而不表示背景细节.

  • 封装是将对象的所有内部细节隐藏在外部现实世界中的过程."封装"一词,就像"封闭"成"胶囊".它限制客户端看到其实现抽象行为的内部视图.

我认为通过上面的回答,面试官确信,但后来我被问到,如果两者的目的都隐藏了,那么为什么需要使用封装.那时候我没有一个好的答案.

我应该添加什么来使我的答案更完整?

oop encapsulation abstraction

50
推荐指数
5
解决办法
16万
查看次数

是否定义了有符号整数的按位运算结果?

我知道有>>符号整数的行为可以依赖于实现(具体来说,当左操作数为负时).

怎么样的人:~,>>,&,^,|?当他们的操作数有符号内建类型(整数short,int,long,long long),都将结果保证是相同的(中位含量),好像他们的类型是无符号的?

c c++ bitwise-operators

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

检查两个向量是否相等

如何检查两个向量的第一个"n"元素是否相等?

我尝试了以下方法:

#include <iostream>
#include <vector>
#include <iterator>
using namespace std;

typedef vector<double> v_t;

int main(){
    v_t v1,v2;
    int n = 9;

    for (int i = 1; i<10; i++){
        v1.push_back(i);
        v2.push_back(i);
    }
    v1.push_back(11);
    v2.push_back(12);

    if (v1.begin()+n == v2.begin()+n)
        cout << "success" << endl;
    else
        cout << "failure" << endl;
}
Run Code Online (Sandbox Code Playgroud)

为什么打印"失败"而不是"成功"?

c++ vector set

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

Thread.stop() - 已弃用

为什么Thread.stop()在Java中被弃用?在他们的网站上,我看到以下内容:

为什么Thread.stop弃用?

因为它本质上是不安全的.停止线程会导致它解锁已锁定的所有监视器.(当ThreadDeath异常传播到堆栈中时,监视器将被解锁.)如果先前受这些监视器保护的任何对象处于不一致状态,则其他线程现在可以以不一致的状态查看这些对象.据说这些物体已被损坏.当线程对受损对象进行操作时,可能会导致任意行为.这种行为可能很微妙并且难以检测,或者可能是明显的.与其他未经检查的异常不同,它会ThreadDeath默默地杀死线程; 因此,用户没有警告他的程序可能被破坏.腐败可以在实际损害发生后的任何时间显现,甚至在未来几小时或几天.

我不明白"监视器"是什么意思.无论如何,我的问题是如果Thread.stop()不应该调用那么Java线程应该如何停止?

java multithreading

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