小编Jon*_*Jon的帖子

C++ 11中"final"关键字用于函数的目的是什么?

finalC++ 11中关键字用于函数的目的是什么?我理解它可以防止派生类的函数覆盖,但如果是这种情况,那么将你的final函数声明为非虚函数是不够的呢?还有其他我想念的东西吗?

c++ final c++11

130
推荐指数
8
解决办法
9万
查看次数

为什么size_t未签名?

Bjarne Stroustrup在C++编程语言中写道:

无符号整数类型非常适合将存储视为位数组的用途.使用无符号而不是int来再获得一位来表示正整数几乎不是一个好主意.通过声明无符号变量来确保某些值为正的尝试通常会被隐式转换规则所取代.

size_t似乎是无符号的"再获得一位代表正整数".那么这是一个错误(或权衡),如果是这样,我们应该在我们自己的代码中最小化它的使用吗?

Scott Meyers的另一篇相关文章就在这里.总而言之,他建议不要使用无符号in接口,无论值是否总是正数.换句话说,即使负值没有意义,也不一定要使用无符号.

c++ size-t unsigned-integer

56
推荐指数
2
解决办法
8485
查看次数

如何使Visual Studio 2012颜色看起来像Visual Studio 2010?

我不喜欢Visual Studio 2012中提供的暗色和浅色主题.

如何更改标题栏,菜单栏,工具栏等的颜色,使它们看起来像Visual Studio 2010中的颜色?

visual-studio-2012

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

为什么私有虚拟方法在C#中是非法的?

来自C++背景,这让我感到惊讶.在C++中,将虚拟函数设为私有是一种很好的做法.来自http://www.gotw.ca/publications/mill18.htm:"准则#2:更喜欢将虚拟功能设为私有."

我还引用Eric Lippert的博客,来自Knights-knaves-protected-and-internal:

私有虚拟方法在C#中是非法的,这让我感到厌烦.如果我们拥有它,我会完全使用该功能.

据我所知,在C#中,您无法覆盖派生(但不是嵌套)类中的私有虚方法.为什么会这样?在C++中,访问说明符与是否可以覆盖函数无关.

c# virtual private

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

如何使用lambda表达式作为模板参数?

如何使用lambda表达式作为模板参数?例如,作为初始化std :: set的比较类.

以下解决方案应该有效,因为lambda表达式只创建一个匿名结构,它应该适合作为模板参数.但是,产生了很多错误.

代码示例:

struct A {int x; int y;};
std::set <A, [](const A lhs, const A &rhs) ->bool {
    return lhs.x < rhs.x;
    } > SetOfA;
Run Code Online (Sandbox Code Playgroud)

错误输出(我使用g ++ 4.5.1编译器和--std = c ++ 0x编译标志):

error: ‘lhs’ cannot appear in a constant-expression
error: ‘.’ cannot appear in a constant-expression
error: ‘rhs’ cannot appear in a constant-expression
error: ‘.’ cannot appear in a constant-expression
At global scope:
error: template argument 2 is invalid
Run Code Online (Sandbox Code Playgroud)

这是GCC中的预期行为还是错误?

编辑

有人指出,我正在使用lambda表达式错误,因为它们返回了他们所指的匿名结构的实例.

但是,修复该错误并不能解决问题.我收到lambda-expression in …

c++ lambda templates c++11

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

Visual Studio 2015:如何从VS 2010中恢复旧的查找对话框?

我发现新的"快速查找"对话框难以使用:

  1. 很难看出是否选择了"匹配大小写"或"匹配整个单词",尤其是当编辑器处于焦点时.
  2. 我发现"Aa"比"匹配案例"难以理解,而"Ab"比"匹配整个单词"难以理解.
  3. 用于选择匹配大小写/整个单词的键盘快捷键仅在工具提示中可见.
  4. 该对话框不再可移动.

我知道将"在文件中查找"重新映射到Ctrl + F,但是有太多的点击次数来搜索当前文档与所有文件.

visual-studio-2012 visual-studio-2013 visual-studio-2015

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

使用C++ 11会改变哪些好的编程实践?

例如,"如果复制价格昂贵,则不按值返回对象"(不能始终使用RVO).由于rvalue引用,此建议可能会更改.

关于存储指向对象的指针集合可能也是如此,因为将它们按值复制到集合中太昂贵了; 这个原因可能不再有效.

或者可能不赞成使用枚举来支持"枚举类".

还有哪些其他做法或提示会改变?

c++ c++11

21
推荐指数
2
解决办法
979
查看次数

如何在Visual Studio 2017中调试.NET 4.6框架源代码?

这是我尝试过的:

在Visual Studio 2017中创建了一个新的控制台应用程序(.NET Framework).

添加了以下代码:

static void Main(string[] args)
{
    new Dictionary<int, int>().TryGetValue(3, out int x); //I want to step into TryGetValue() (this is just an example)
}
Run Code Online (Sandbox Code Playgroud)

配置此处列出的设置:https: //blogs.msdn.microsoft.com/sburke/2008/01/16/configuring-visual-studio-to-debug-net-framework-source-code/

已确认的符号将加载到"模块"窗口中:

mscorlib.dll已加载符号.4.6.1586.0构建者:NETFXREL2

试过:"踏入(F11)"

尝试:"步入特定"| "System.Collections.Generic.Dictionary.TryGetValue"

两者都只是跨过了界限.

我尝试使用以下详细信息配置VS:http://www.symbolsource.org/Public/Home/VisualStudio

同样的结果,调试器跨越了这一行.

我在这里看了答案:https://stackoverflow.com/a/12432029/297451

但是这个版本似乎不是安全更新,搜索"site:support.microsoft.com/kb 4.6.1586.0"什么都不会产生任何结果.

我究竟做错了什么?

.net c# debug-symbols visual-studio-debugging visual-studio-2017

19
推荐指数
2
解决办法
8275
查看次数

在Windows中使用C++的低延迟交易系统?

似乎所有主要的投资银行都在Unix(Linux,Solaris)中使用C++来实现低延迟/高频服务器应用.为什么Windows通常不用作此平台?是否有技术原因导致Windows无法竞争?

c++ linux windows

14
推荐指数
5
解决办法
5748
查看次数

使用github时无法找到"Visual Studio Web请求处理程序"的解决方法?

当我在github上选择"在Visual Studio中打开"时,我收到以下错误:

"无法找到Visual Studio Web请求处理程序"

我相信这是由于git-client协议处理程序未正确注册.

这里列出了VS2015的封闭错误,但没有解决方法:https://github.com/github/VisualStudio/issues/140

我试图修复Visual Studio 2017,但没有解决它.是否有解决方法,可能是通过编辑HKEY_CLASSES_ROOT\git-client条目?

github protocol-handler visual-studio-2017

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