注:本篇内容转载与网络,方便自己学习,如有侵权请您联系我删除,谢谢。

  有位同学问我“Visual C++和C++有什么区别?”,这的确是初学者会感到困惑的问题,比较常见。除此之外,还有“先学C++好,还是先学Visual C++好?”,都属于同样的概念不明的问题,就比如问“英语和英语词典有什么区别”一样。要弄清这个问题的答案,就要明白语言,工具,库,标准的概念。可以参考我之前发的 Programming Language 那篇笔记。

一门程序语言,例如C++,根本上是一套语法体系,是逻辑领域上的规则集。而要真正使用计算机来应用程序语言,就需要有相应的语言实现,历史上,C++有多种实现,比如早期的cfront, 曾经的Turbo C++,现在流行的Visual C++和GCC。这些特定实现,以工具的方式存在于计算机中,比如编译器,链接器等。

但是单纯的语言实现是解决不了实际需求的,因此许多实现都提供了额外的程序,初期各种实现所带的库都是不同的,这就导致了同一语言不同实现之前移植的难度,因此业界就形成了一个标准委员会,为C++制订一套标准库,包含IO库, STL等。除去标准库外,还需要各种程序库来实现各个领域的需求,就有了各种各样的界面库,网络库等,比如C++常见的界面库有MFC,WTL,wxWidgets, GTK+,Qt,为了方便程序员使用这些库,工具厂商便将一些库直接集成到工具包中一起发售,比如Visual C++中除了对STL的支持外,还包含了MFC和ATL两个程序库。

所以说,C++是语言,Visual C++是工具集,MFC是程序库。要解决实际问题,开发应用程序,语言、工具和程序库三方面的学习是缺一不可的,而在程序库的学习中,标准库又是重中之重。

[转]Visual C++ 和 C++ 有什么区别?的更多相关文章

  1. visual C++ 项目和解决方案的区别

    项目:         项目是构成某个程序的全部组件的容器,该程序可能是控制台程序.基于窗口的程序或某种别的程序.程序通常由一个或多个包含用户代码的源文件,可能还要加上包含其它辅助数据的文件组成.某个 ...

  2. Visual Studio Debug和Release的区别及obj的作用

    一.Debug和Release的区别      1.Debug:调试版本,包含调试信息,所以容量比Release大很多,并且不进行任何优化(优化会使调试复杂化,因为源代码和生成的指令间关系会更复杂), ...

  3. c++ 11 国标标准方面的异常处理与微软在Visual Studio 2012的异常处理的区别

    这段代码: __try { } __except(GetErrorCode()) { } 可以捕获空指针,但是包围在其中的代码不能有自带析构函数的对象.c++ 11 标准里面的auto_ptr关键字, ...

  4. visual studio build and rebuild 的区别

    build 只编译发生改变的dll, (如下, 我只修改了web API,build的时候, 只有webAPI.dll发生更新) rebuild = clean + build (如下, 本项目中dl ...

  5. Perforce 与Source Insight, Visual Studio集成

    转自:http://shashanzhao.com/archives/837.html 1.Perforce 首先需要为perforce设置系统环境变量,以便perforce命令行可以正常使用. 环境 ...

  6. 杂项-软件: VBA(Visual Basic for Applications)

    ylbtech-杂项-软件: VBA(Visual Basic for Applications) VBA (Visual Basic宏语言) Visual Basic for Application ...

  7. Visual Studio 项目目录下的bin目录和 obj目录

    一.Bin目录 Visual Studio 编译时,在bin 目录下有debug 和 release 目录. 1.Debug: 通常称为调试版本,它包含调试信息,所以要比Release 版本大很多(可 ...

  8. web项目开发流程

    对于一个web项目,在实际编码之前,有一些通用的步骤来planning a website: 0.Defining the project (predr0->dr0) 对于外部项目,客户一般会发 ...

  9. Visual Studio 中 Build 和 Rebuild 的区别

    因为之前写的程序比较小,编译起来比较快,所以一直都没有太在意 Build 和 Rebuild 之间的区别,后来发现两个还是有很大不同. Build 只针对在上次编译之后更改过的文件进行编译,在项目比较 ...

随机推荐

  1. MQ测试

    2015年8月13日23:14:52 测试RabbitMq ====================== 千兆局域网:send ≍10000/s  receive ≍7000/s 百兆局域网:send ...

  2. Go语言 map遍历

    1 遍历顺序 Go语言里的map,是不保证遍历顺序的(这一点很好理解).甚至同样内容的map,两次遍历的顺序,也可能不一样.下面是一个例子: m := map[string]int{"a1& ...

  3. shell单引号双引号详解

    linux shell中的单引号与双引号的区别(看完就不会有引号的疑问了) " "(双引号)与 ' '(单引号)的区别    你在shell prompt(shell 提示)后面敲 ...

  4. Linux 服务器性能问题排查思路

    一个基于 Linux 操作系统的服务器运行的同时,也会表征出各种各样参数信息.通常来说运维人员.系统管理员会对这些数据会极为敏感,但是这些参数对于开发者来说也十分重要,尤其当你的程序非正常工作的时候, ...

  5. 运维不仅仅是懂Linux就行,还需要知道这些……

    运维不仅仅是懂Linux就行,因为还有一大部分的Windows运维,最近看一个报道说,windows的服务器占了47.71%.嗯,向windows运维人员致敬.当然我们这篇文章不是说运维除了懂Linu ...

  6. 使用with子句优化代码中重复查询

    /*好处: 1. 性能更好,一份复制(类似SYS_TMP...),多份使用.       2. 结构清晰,预先定义.       3. 代码修改不必修改多处.       请注意观察语句1和语句2执行 ...

  7. GoAccess分析Nginx日志详解

    一.为了提高 GoAccess 分析准确度,建议配置 nginx.conf 的 log_format 项如下: log_format main '$remote_addr - $remote_user ...

  8. webpack学习(三)html-webpack-plugin插件

    一.html-webpack-plugin插件 简单创建 HTML 文件,用于服务器访问 例如:我们要为输出文件添加哈希值标记,避免老的不变的文件重新加载,避免新修改的文件受缓存影响. 在前后两次在终 ...

  9. Vue、PHP、Bootstrap联手打造简单数据管理表格

    这是一个用Vue.Bootstrap和PHP一起写的小实例,回顾总结了一下之前学习的知识,顺带添加点学习乐趣. 先上效果图: 用到的知识有:Vue数据绑定及组件.Bootstrap界面.PHP-AJA ...

  10. Java中类继承、接口实现的一些要注意的细节问题

    1.接口A和接口B有相同的方法,只是返回值不同,则实现类不能同时实现这两个接口中的方法. 接口A有void C()方法,接口B有int C()方法,则无法同时实现这两个接口. Java为了弥补类单继承 ...