在Visual Studio中从零开始学习C++?

9
我需要尽快了解C++(我以前从未使用过),通过Visual Studio(即托管C++)学习是否有用?还是我最终会学习VS中的C++扩展和特殊性,而不是语言本身?
如果不建议在VS中学习,则您建议使用哪个平台/ IDE?
编辑:有人可以详细说明当编写非托管C ++时,VS将隐藏或管理哪些内容吗?我真的需要学习指针,垃圾收集和所有低级语言的细节... VS是否抽象或隐藏了这种类型的内容?
感谢所有建议...
11个回答

14

Visual Studio(或免费版本Visual C++ Express)在Windows上是一个完全不错的选择。在Linux上,您可能最终会使用GCC。两者都是好的编译器。

Visual C++支持“真正的”本地C ++和C ++ / CLI,受管理的.NET版本,因此如果您想学习C ++,只需创建常规C ++项目即可。

如果您关心学习“正确”的标准C ++,请注意编译器默认启用了许多微软扩展,您可能希望禁用这些扩展。(项目属性-> C / C ++->语言->禁用语言扩展)。

值得一提的是,GCC也有类似的扩展(可以通过调用带--ansi的编译器来禁用),所以这不仅仅是微软变得庞大邪恶和非标准化。


很好的回复,非常清晰,谢谢。 - flesh
好的,但是Visual Studio提供了许多模板,这些模板会向项目中添加很多垃圾。要在Visual Studio中学习STL C++,我们需要安装特定的模板还是使用现有的模板之一? - xus
1
它还提供了一些不会向项目添加任何内容的模板。只需创建一个Win32 C++项目,在详细对话框中勾选“空项目”选项即可。 - jalf

8

Visual Studio拥有一个非常好的调试器。它支持STL类型(2008版本更好),这将在调试时帮助你。

从你创建第一个控制台项目(新建->项目->Win32控制台应用程序)开始,Visual Studio坚持使用微软特定的规范。

// test123.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"


int _tmain(int argc, _TCHAR* argv[])
{
    return 0;
}

stdafx.h是什么?_tmain是什么?_TCHAR是什么?(顺便说一下,不需要在这里回答)这些都是新手不应该出现的问题。

因此我建议在Win32控制台应用程序项目中使用“空项目”复选框,然后从“项目”菜单中选择“添加新项”,选择一个cpp文件,这将给您一个空白页面,您可以在其中实现从好的C ++书中读取的代码。


6

Visual Studio集成开发环境可以用于多种语言,例如C#、托管的C++以及非托管的C++。因此:

  1. 你不仅可以使用VS来编写托管的C++,还可以使用它来编写非托管的C++。
  2. 如果你只是想学习C++,那么你不需要学习托管的C++。

谢谢Chris - 我的理解是“Visual C++”指的是直接使用非托管C++? - flesh
“Visual C++”通常用于标识使用Visual Studio IDE与标准C++或Microsoft的C++/CLI语言相结合的产品。 - MSalters
如果我看到“Visual C++”(例如在招聘广告中),我会认为它指的是标准C++,使用VS IDE和Microsoft/Windows API。 - ChrisW

3

Visual Studio并不一定使用Managed C++。您可以使用该选项编译它,但这并不是必需的。

在我看来,学习使用Visual Studio是一个很好的选择,因为你可以直接进入代码,而不用过多担心项目配置。


3

一切都取决于您的需要,第一步是阅读一些基础的书籍以及一些高级的书籍,例如effective C++。

Managed C++与纯C++非常不同,除此之外,VS也可以让您编写纯C++。因此,如果您的目标是学习纯C++,我认为您不需要学习受控扩展。

您能详细说明一下为什么需要学习C++吗?您将要处理什么样的项目?

有了Intellisense和帮助功能的Visual Studio是学习语言的很好平台。


3

Eclipse是一款出色的集成开发环境,支持多种语言,包括c++。Eclipse CDT可以在这里找到:http://www.eclipse.org/cdt/


2

我的经验:我第一次尝试编程是在VS中使用C ++。学习语法相对简单,但直到我离开IDE才开始理解编译/链接等方面,这更加痛苦。这些细节大部分由IDE管理/隐藏。

话虽如此,如果您是有经验的程序员,特别是如果您的目标是在VS中使用C ++(例如在工作或学校环境中),那么这是一个可行的快速启动选项。


你能详细说明哪些细节是隐藏的吗?我真的需要掌握指针、内存管理以及 C++ 的底层知识 - 大概这些内容对你来说都不会是隐藏的吧? - flesh
哈 - 我不确定我是最适合教你的人。对我来说,还有很多东西是隐藏的。 Visual Studio并没有将C++的内部机制隐藏起来,你在IDE中得到的与在命令行上一样多。这是一件好事;否则它就不会是C++了。我所指的是,在代码和可执行文件之间有很多事情发生。当我第一次使用VS时,我没有任何关于“makefile”(或等价物)的概念,而且我认为“编译”意味着“按F5”。最终,即使你继续在IDE中工作,你也会想知道幕后发生了什么。 - TSomKes
我喜欢知道幕后发生了什么,但我也喜欢将要学习的东西分解成易于管理的块。这意味着,如果我正在学习C ++,我希望环境尽可能易于使用。一旦我已经学到了一个合理的水平,那么我会学习其他东西。 - David Thornley
说得好。学习编程语言本身就不是一件小事,加上许多复杂的环境往往会分散注意力。 - TSomKes

0

对于C ++,我习惯了使用Borland编译器 http://www.turboexplorer.com/。编译器之间的区别在于它们使用的库(dll和includes,但其中一些是标准的)。我开始使用DevC ++(免费编译器 http://www.bloodshed.net/devcpp.html),我也喜欢它。

语言是相同的。但最好尝试不同的编译器并使用您最喜欢的。

学习C ++ 最好以控制台应用程序为开始。


1
抱歉,但Borland编译器缺乏对标准的大量支持,它们存在漏洞,有些东西根本无法使用。 这是我在工作中真正面临的噩梦,要摆脱因Borland创建其编译器的某种“非标准”方式而创建的旧垃圾代码。 如果这还不够,他们的编译器、链接器和IDE真的很有漏洞。我每天都要重新打开它好几次。 - Gustavo Muenz

0

引用MSDN关于托管 C++ 的说法:

为了扩展C++语言,托管扩展(Managed Extensions)被创建出来,允许您使用.NET Framework并针对公共语言运行时进行开发,而无需学习一种新的编程语言。

因此,“托管 C++”并不能帮助您学习C++。此外,我个人认为学习一门语言最好的方法是学习其基础知识,而不是某些扩展。这与所使用的编译器/集成开发环境(IDE)无关。虽然 Visual Studio 可以提供很多实用功能,但也完全可以使用类似g++这样的简单文本编辑器与命令行编译器进行开发。


0

如果你只想学习纯粹的C++和最基本的其他东西,我建议安装cygwin和gcc/g++。我推荐cygwin的原因是从问题中看来你正在使用Windows。否则,如果你正在使用*nix类型的系统,你应该已经有了gcc。

你需要做的就是在你喜欢的编辑器中创建你的c++文件并进行编译。你仍然需要学习如何使用gcc,可能还需要学习如何制作文件(特别是如果你正在制作一个非平凡的项目),但这可能是你学习C++所需的最基本的设置。


1
你对“最低限度”的定义有些奇怪。我认为安装VC++ Express(免费,一个单一的应用程序)比通过Cygwin +编译器+ make +其他所需内容更简单。 - jalf
你用过cygwin吗?对于一个人来说并不那么复杂。其次,他的问题是学习而不是安装(请阅读原帖)。他只需要学习如何使用编译器就可以了。当使用IDE时,你需要学习的不仅仅是如何编译。我并不反对使用IDE,我自己也使用eclipse。我只是试图回答他的问题。 - hhafez
1
在类Unix系统(如Linux或Mac OSX)上,请使用g++。在Windows上,我看不出为什么不使用VS。在Cygwin中,您需要了解更多内容,而不仅仅是如何编译,就像您需要学习有关VS的一些知识一样。 - David Thornley
也许我认为每个人都和我一样熟悉*nix环境,但是这其实是一个错误的假设。但是如果你已经知道如何使用sh/ksh/bash等命令,那么你所需要学习的只有编译过程。而这正是OP所说他不想被IDE隐藏起来的东西之一。然而,如果他没有任何*nix shell的使用经验,那么你的说法是完全正确的。 - hhafez

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接