lzth.net
当前位置:首页 >> vs2010里竟然不让我用C++11的初始化列表!其它C++1... >>

vs2010里竟然不让我用C++11的初始化列表!其它C++1...

VS2012以上才完整支持C++11.来自C++11 Features (Modern C++)的一段话:Visual C++ 2010 implemented many features in the C++0x core language specification, which was the precursor to C++11, and Visual C++ in Visual Studio 2012

vs2010还没有实现c++11的线程支持库, 换vs2012或者vs2013.std::thread 的使用非常放便和强大,该类几乎可以把任何函数作为线程主函数.用法:1. 首先包含头文件 #include 2. 定义线程主函数: 根据不同的需要,线程的主函数可以是普通函

建议使用vs2013或者更高版本.vs2010是绝对不支持的.

这个肯定是不行的,因为类的数据成员一般都是私有或保护的,这种形式初始化要求数据成员为公有,而且,在C++中,即便数据成员都为公有也不允许这样初始化.

以下是Microsoft Visual Studio 2010,2012,2013对C++11支持的比较 . C++11 Core Language Features Visual Studio 2010 Visual Studio 2012 Visual Studio 2013 Rvalue referencesv0.1,v1.0,v2.0,v2.1,v3.0 v2.0 v2.1* v2.1* ref-qualifiers No No No

不好意思,我VS用的真的非常少,而且很少面对名字冲突这种事情.对于你的情况,我能想到两种解决方案:1. 使用老版本的SDK,How to: Modify the Target Framework and Platform Toolset2. 解决名字冲突:不要在代码中直接using整个namespace,这回让你以后少遇到很多要处理的麻烦

使用VS2013,支持c++11auto遍历list<int> t;for( auto &i : t ){cout<< i;}lambda表达式std::function<void()> f = []{cout<< "lambda";};f();

2010的推出时间实际上是晚于2010的,对C++11的支持只限于部分.详细的支持情况参考文章http://blog.csdn.net/comhaqs/article/details/38417575欢迎追问

不太明白楼主的意思.你的clock的构造函数是这么写的么? Clock::Clock(int aHour, int aMin, int aSec):time1(aHour,aMin,aSec) {} Clock不能直接给aHour赋值,因为它不属于他,只能间接调用MyTime的构造函数.

(1)对于const和reference类型成员变量,它们只能够被初始化而不能做赋值操作,因此只能用初始化列表;初始化与赋值是不同的:赋值是删除原值,赋予新值,构造函数的意思是先开辟空间然后为其赋值,只能算是赋值,不算初始化;初始化列表就不一样了,开辟空间和初始化是同时完成的,直接给予一个值;常量不能被赋值,只能被初始化,所以必须在初始化列表中完成;C++的引用也一定要初始化,所以必须在初始化列表中完成.【 1) 引用必须被初始化,指针不必; 2) 引用初始化以后不能被改变,指针可以改变所指的对象; 3) 不存在指向空值的引用,但是存在指向空值的指针.】

相关文档
网站首页 | 网站地图
All rights reserved Powered by www.lzth.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com