2012-02-10 12 views
5

Duplicar posible:
The Definitive C++ Book Guide and List¿Cómo iniciar el objeto orientar la programación en C++?

Básicamente yo soy de C, C Embedded campo. Después de trabajar durante 5 años en este campo, me gustaría iniciar C++. Ahora, he comenzado a aprender C++. Pero el concepto de Clase no está haciendo clic en mi cabeza. Por favor, sugiérame cómo debería comenzar el concepto de Clase o algún sitio web bueno y simple donde pueda iniciar C++ fácilmente. Y sugiérame algunos buenos problemas de C++ (sitios web donde puedo encontrar algunos ejercicios de C++).

Respuesta

1

C++ es originalmente de c, este libro puede ayudar a entender C++: "En el interior del C++ Object Model"

+0

para principiantes ?? – Nikko

+0

"Básicamente, soy de C, campo C incrustado. Después de trabajar durante 5 años en este campo, me gustaría iniciar C++." – Proteas

2

Si desea aprender C++, Stroustrups "La ++ lenguaje C" es un muy buen punto de partida de la OMI . Personalmente también aprendí mucho de Scott Meyers "Effective C++" y "C++ más efectivo"

También creo que, teniendo en cuenta los antecedentes integrados, es posible que no solo necesites "aprender el idioma" sino que trabajes en tu comprensión de Programación Orientada a Objetos. Creo que uno de los libros básicos en este campo es "Análisis y diseño orientado a objetos" de Grady Booch y "Gang of Four": Gamma/Helm/Johnson/Vlissides "Design Patterns" (aunque ambos libros están escritos con un fondo Java)

4

Eche un vistazo a Definitive C++ Book Guide. Como tiene antecedentes en C, recomendaría "Accelerated C++" por Koenig y Moo, ya que muestra el código en los modernos C++ desde el principio. esto probablemente lo ayude a enfocarse en las diferencias entre C y C++ y le muestre qué partes de sus hábitos de C tendrá que desaprender.

0

El concepto de "clase" se puede modelar fácilmente a un pensamiento C struct que contienen miembros de datos y un puntero a una estructura que contiene los punteros de función (la tabla v), donde todas las funciones tienen un parámetro de "oculto" Class* this.

Dicho esto, si ya está familiarizado con los punteros struct, pointer y pointer, las clases no son nada "misteriosas".

Todo lo demás es "arte de uso" y no está relacionado con el concepto de clase en sí, sino con la forma en que se pueden organizar para tener un código de mantenimiento efectivo.

En este punto se puede

  • intentar usted mismo para codificar un programa en C diseñado manera tat (señalando complicado, sólo para obtener la clave) o
  • olvidarse de C en sí, y tratar de comprender cómo el concepto debería usarse (en lugar de lo que técnicamente es).

Para el último punto de la "C Accelerated ++" Koenig y MOO libro puede ser un buen comienzo: no se considera C, pero la forma en C++ y es la biblioteca se debe utilizar, y -después de ir más y más profundo en detalle- muestra de dónde provienen esos conceptos.

+1

la mayoría de los usos * interesantes * de una clase no tienen nada que ver con funciones virtuales, sino con control de acceso (privado/público), operadores y constructores/destructores. En otras palabras, nada como una estructura C – jalf

+0

@ jalf: estoy de acuerdo, pero * no puedes volar a menos que salgas de la tierra *. El OP preguntó algo acerca de lo que es una clase, tu comentario es acerca de para qué sirve. Estoy hablando del concepto de "tierra" y del significado del verbo "salir". Después de que el OP entienda eso, no puede comenzar a hablar sobre el verbo "volar" y sobre el "sistema de control de vuelo". Hablando del "sistema de control de vuelo" para alguien que no lo hace t saber acerca de la existencia de aviones no tiene ni idea. Entiendo que todo esto puede ser opinable, pero dowvoting para opinable re asons es prejudice.- –

+0

¿Entonces no describirías un avión en términos de su capacidad para volar? Creo que el * propósito * de algo es bastante esencial para entenderlo. Podríamos hablar de un avión como "algo que puede volar y transportar pasajeros", o lo podríamos describir como "un cigarro de titanio de gran tamaño con muchos asientos dentro y dos pedazos planos de metal sobresaliendo". Si quieres entender las clases, debes pensar para qué se usan. Una clase le permite definir un nuevo tipo de datos y le permite imponer comportamientos en ese tipo de datos. ctors/dtorsare son esenciales para hacer eso. Las funciones virtuales no lo son. – jalf

Cuestiones relacionadas