2010-08-17 12 views
5

Im un programador de Java, con un poco de conocimiento de C que quiere empezar con C++ ¿alguien puede recomendar un buen tutorial?Nuevo en C++, ayúdame a empezar

también ayuda con:

  • proyectos para aprender con
  • lecturas recomendadas
  • lo IDE? Actualmente uso de NetBeans
  • general C++ consejos
+4

Para la lectura recomendada, consulte http://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list . –

+0

Comprueba si NetBeans tiene complementos C/C++ (estoy bastante seguro de que lo hace). – FrustratedWithFormsDesigner

+8

Para ser sincero, si quiere aprender C++ propiamente dicho, pretenda que nunca ha aprendido Java o C. Sí, comparten una sintaxis similar, pero hacen las cosas de manera tan diferente que intentar aplicar lo que es una práctica común en Java o C conducir al desastre en C++. –

Respuesta

6

Depende de su plataforma de destino, yo uso Visual Studio como un IDE.

La regla general de C++ frente a Java es que contiene muchísimo más libertad que Java, especialmente en lo que respecta a plantillas frente a genéricos, la pila frente al montón y la aplicación (o la falta de ella) de orientación al objeto y sus principios. Por ejemplo, C++ proporciona la declaración de amigo que rompe la encapsulación, const_cast, asigna objetos en la pila y los punteros pueden señalarlos, las plantillas tienen infinitamente más poder que los genéricos, etc.

Lo otro importante que tendrá que obtener acostumbrado a la gestión de recursos. C++ no proporciona un GC. Tendrá que familiarizarse con RAII (la adquisición de recursos es la inicialización) y cómo la construcción y la destrucción basadas en el alcance funcionan para evitar fugas de recursos.

También necesitará retocar la Biblioteca de plantillas estándar (STL). El STL tiene un enfoque mucho más directo que las bibliotecas de Java; por ejemplo, la clase std :: iostream proporciona métodos nativos para extraer flotantes, cadenas, etc. del archivo, mientras que en Java necesita un archivo y un escáner, aunque es el alcance es mucho más limitado: no hay GUI o componentes basados ​​en directorios, solo para empezar.

Ah, por cierto, en serio, abandona tu conocimiento de C. Te dolerá en lugar de ayudarte.

+2

Los amigos no necesariamente rompen la encapsulación. http://www.parashift.com/c++faq-lite/friends.html#faq-14.2 –

+0

Ese no es el punto. El punto es que Java lo eliminó porque podría romper la encapsulación. C++ no. – Puppy

+0

gracias que todo un paquete de conocimiento útil – Gwilym

1

El enlace de lectura que in silico siempre es una buena para la vista.

Mi consejo más grande y más general sería familiarizarme con las bibliotecas Boost y familiarizarme con RAII (Resource Allocation is Initialization) ¡y vivir de acuerdo con esto!

No soy un usuario de NetBeans, pero si te gusta y hay un complemento de C++, entonces es probable que sugieras que comiences. No tiene sentido crear otro entorno que intente aprender sobre un nuevo idioma si no es necesario. Habiendo dicho eso, soy un usuario de Eclipse y el complemento C++ (CDT) es bastante bueno.

+0

gracias He usado un Eclipse un poco como equipo con el que trabajé una vez insistí en que todos usaran el mismo IDE, estaba bien pero estoy acostumbrado a netbeans. Pero si no me llevo, tengo una maravilla más que eclipse^_^ – Gwilym

1

Obtenga un libro de estilo C++ de libro de texto universitario como Deitel and Deitel. La parte más difícil es aprender todos los detalles del idioma cuando diseña una biblioteca reutilizable, pero si solo está uniendo piezas existentes, no debería ser tan malo si ya conoce Java. Hay una sutil diferencia entre el objeto declarado como variable plana, su puntero y su referencia que debe aprender, junto con la administración de recursos. Una vez que entiendas el idioma, completa los espacios usando los clásicos como Stroustrup y Meyers.

Según IDE, debe intentar tantos como sea posible, incluidos Visual Studio, X Code, Anjuta y Eclipse y ver lo que más le gusta. Probablemente también deberías aprender formas de compilar sin el IDE usando Make (o SCons) y vi.

Para el proyecto, primero debe apegarse a CUI ya que no hay una implementación estándar de la GUI a diferencia de Java, pero eventualmente desea implementar algo como Tetris o la biblioteca matemática matricial, que encaja muy bien con OO. wxWidgets y Qt son multiplataforma, si quieres que sea multiplataforma, sino que deben dirigirse a cualquiera que sea la plataforma que le interesa

libro
1

.Esta no es demasiado en el enlace y lo uso:.

Programación orientada a objetos en C++ por Robert Lafore, Asume cero antecedentes y es bastante fácil.

. Para IDE Visual Studio se usa comúnmente entre los principiantes como yo :).

. Como un buen ejemplo, puede intentar crear una clase para "Números complejos" que tenga sus propias funciones para agregar, eliminar, multiplicar y dividir miembros. Usted aprenderá acerca de la encapsulación de datos y funciones dentro de esa clase y también la sobrecarga de operadores

ejemplo:

int i1 = 5 ; 
int i2 = 6 ; 
int i3 ; 
i3 = i1 + i2 ; //correct 

complex c1.setreal(3) ; //here you learn about member functions of the class 
complex c1.setimg(5) ; 
complex c2.setreal(6) ; 
complex c2.setimg(8) ; 
complex c3 ; 
c3 = c1 + c2 ;//wrong until you overload the operator + 
0

Algunas sugerencias para IDE:

  • NetBeans (full version) - Funciona con gcc (no incluido). En Windows, gcc está disponible con Cygwin y MingW. Se puede usar para construir aplicaciones basadas en Qt (ver Qt a continuación). Disponible para Windows, Linux y Solaris (tal vez otros).
  • Qt Creator - Incluye el marco de Qt que permite la portabilidad de aplicaciones de GUI en múltiples plataformas. Se puede usar con gcc o MSVC (solo Windows). Disponible para Windows de 32 bits (puede compilarse para Windows de 64 bits con cierta dificultad), Linux de 32 o 64 bits y Mac OS X.
  • MS Visual C++ 2010 Express - Descarga gratuita que se puede usar para compilar aplicaciones de Windows de 32 o 64 bits. Puede ser utilizado para construir aplicaciones estándares de C++. También permite construir Managed C++, pero si vas a hacer eso, probablemente prefieras ir con C#. Se pueden construir GUI multiplataforma con el marco Qt.
  • Eclipse CDT - No he usado este pero he escuchado cosas buenas al respecto, y sería negligente no mencionarlo al menos. Sé que construirá aplicaciones de Windows de 32 bits (no estoy seguro de las de 64 bits) y hay versiones para Linux (32 y 64 bt).
+3

¿Qué, no Vi/Emacs? :) – greyfade

+0

Instalé el complemento de C++ y lo hice feliz con Gcc vea que va desde allí – Gwilym

+0

@greyfade: ¡Bien! – andand

4

buen tutorial?

No hay recomendaciones de tutoriales, ya que es muy probable que el tutorial no toque características de lenguaje más complejas. Consigue un libro.

proyectos para aprender con

Qt 4 una vez que esté familiarizado con el lenguaje, cualquier proyecto que utiliza STL/Plantillas/Qt. El código fuente de Boost puede valer la pena aprender de él.

lectura recomendada

Cualquier libro de Bjarne Stroustrup sobre C++.Pesada lectura, pero buena como referencia, un libro sobre patrones de diseño también podría ser útil.

¿qué IDE? Actualmente uso NetBeans

Visual Studio Express en windows, jEdit/Kate/mcedit/vim/emacs en Linux.

general C++ consejos

Aprende a usar sistemas de construcción externos (cmake/scons/GNU make), la forma de trabajar sin IDE, la forma de trabajar desde la línea de comandos, y tratar de evitar la falta - características específicas del compilador estándar.

0

lectura recomendada

efectiva C++ por Scott Meyers.

Cuestiones relacionadas