final
C++ 11中关键字用于函数的目的是什么?我理解它可以防止派生类的函数覆盖,但如果是这种情况,那么将你的final
函数声明为非虚函数是不够的呢?还有其他我想念的东西吗?
Bjarne Stroustrup在C++编程语言中写道:
无符号整数类型非常适合将存储视为位数组的用途.使用无符号而不是int来再获得一位来表示正整数几乎不是一个好主意.通过声明无符号变量来确保某些值为正的尝试通常会被隐式转换规则所取代.
size_t似乎是无符号的"再获得一位代表正整数".那么这是一个错误(或权衡),如果是这样,我们应该在我们自己的代码中最小化它的使用吗?
Scott Meyers的另一篇相关文章就在这里.总而言之,他建议不要使用无符号in接口,无论值是否总是正数.换句话说,即使负值没有意义,也不一定要使用无符号.
我不喜欢Visual Studio 2012中提供的暗色和浅色主题.
如何更改标题栏,菜单栏,工具栏等的颜色,使它们看起来像Visual Studio 2010中的颜色?
来自C++背景,这让我感到惊讶.在C++中,将虚拟函数设为私有是一种很好的做法.来自http://www.gotw.ca/publications/mill18.htm:"准则#2:更喜欢将虚拟功能设为私有."
我还引用Eric Lippert的博客,来自Knights-knaves-protected-and-internal:
私有虚拟方法在C#中是非法的,这让我感到厌烦.如果我们拥有它,我会完全使用该功能.
据我所知,在C#中,您无法覆盖派生(但不是嵌套)类中的私有虚方法.为什么会这样?在C++中,访问说明符与是否可以覆盖函数无关.
如何使用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 …
我发现新的"快速查找"对话框难以使用:
我知道将"在文件中查找"重新映射到Ctrl + F,但是有太多的点击次数来搜索当前文档与所有文件.
例如,"如果复制价格昂贵,则不按值返回对象"(不能始终使用RVO).由于rvalue引用,此建议可能会更改.
关于存储指向对象的指针集合可能也是如此,因为将它们按值复制到集合中太昂贵了; 这个原因可能不再有效.
或者可能不赞成使用枚举来支持"枚举类".
还有哪些其他做法或提示会改变?
这是我尝试过的:
在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
似乎所有主要的投资银行都在Unix(Linux,Solaris)中使用C++来实现低延迟/高频服务器应用.为什么Windows通常不用作此平台?是否有技术原因导致Windows无法竞争?
当我在github上选择"在Visual Studio中打开"时,我收到以下错误:
"无法找到Visual Studio Web请求处理程序"
我相信这是由于git-client协议处理程序未正确注册.
这里列出了VS2015的封闭错误,但没有解决方法:https://github.com/github/VisualStudio/issues/140
我试图修复Visual Studio 2017,但没有解决它.是否有解决方法,可能是通过编辑HKEY_CLASSES_ROOT\git-client条目?