visibilidad predeterminada de los miembros de clase/estructura de C++


En C++, ¿por qué es privada la visibilidad predeterminada para los miembros de las clases, pero pública para las estructuras?

Author: S I, 2009-08-08

3 answers

C++ se introdujo como un superconjunto de C. Las estructuras se trasladaron de C, donde la semántica de sus miembros era la de public. Existe una gran cantidad de código C, incluidas las bibliotecas que se deseaban trabajar con C++ también, que utilizan estructuras. Las clases se introdujeron en C++, y para ajustarse a la filosofía OO de encapsulación, sus miembros son privados por defecto.

 66
Author: Oren Trutner,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-08-08 01:56:52

Debido a que una clase es una forma habitual de hacer la orientación de objetos, lo que significa que las variables miembro deben ser privadas y tener accesores públicos, esto es bueno para crear acoplamiento bajo. Las estructuras, por otro lado, tienen que ser compatibles con las estructuras C, que siempre son públicas (no hay noción de público y privado en C), y no usan accesores/mutadores.

 7
Author: a_m0d,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-08-13 06:17:55

Probablemente para compatibilidad con estructuras C. De esta manera, las estructuras declaradas en código C continuarán funcionando de la misma manera cuando se usen en código C++.

 1
Author: Karl Voigtland,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-08-08 01:56:40