[C++] Инкапсуляция классов ④ (Разрешения управления доступом | Разница между классами определения ключевых слов struct и class | Разрешения доступа к классам по умолчанию | Методы наследования классов по умолчанию)





1. Разница между ключевыми словами struct и class при определении классов




1. Функция ключевых слов структуры и класса


В языке C++ для определения классов можно использовать как ключевые слова struct, так и class.Эти определенные классы имеют схожий синтаксис и функции, но по умолчанию имеют несколько различное поведение;

В языке C для определения структуры используйте ключевое слово struct; ключевое слово class отсутствует;


2. Разрешения доступа по умолчанию для классов.


Права доступа по умолчанию для классов, определенных ключевыми словами struct и class, различны.

  • Для классов, определенных с помощью ключевого слова struct, права доступа членов по умолчанию являются общедоступными, доступ к которым можно получить как внутри, так и за пределами класса;
  • Для класса, определенного с помощью ключевого слова class, разрешение доступа членов по умолчанию является частным, доступ к которому возможен только внутри класса;

В следующем коде переменная-член age в классе Student, определенная с помощью ключевого слова struct, не объявляет явным образом разрешения доступа. Ее разрешения на доступ к членам по умолчанию являются общедоступными и доступны как вне класса, так и внутри класса;

struct Student {
    
      
	// 默认的成员的访问权限是 public 
	// 可以在 类的外部 和 类的内部 访问 
    int age;
};  

В следующем коде переменная-член age в классе Teacher, определенная с помощью ключевого слова class, не объявляет явным образом разрешения на доступ. Ее разрешения на доступ к членам по умолчанию являются частными и доступны только внутри класса;

class Teacher{
    
      
	// 默认的成员的访问权限是 private
	// 只能在 类的内部 访问
    int age;
};

3. Метод наследования классов по умолчанию.


Методы наследования по умолчанию для классов, определенных ключевыми словами struct и class, различаются.

  • Для классов, определенных с помощью ключевого слова struct, метод наследования членов по умолчанию является открытым;
  • Для классов, определенных с помощью ключевого слова class, метод наследования членов по умолчанию является закрытым;

В языке C++, когда подкласс наследует родительский класс, он может получить все свойства и поведение родительского класса;

Наследование в C++ можно определить с помощью двоеточия :и модификатора доступа public// ;protectedprivate

Существует три способа наследования подкласса от родительского класса:

  • Открытое наследование public: подклассы наследуют открытые и защищенные члены родительского класса и могут предоставлять их внешнему миру как свои собственные открытые и защищенные члены;
  • Защищенное наследование: подкласс наследует защищенные члены родительского класса.Подкласс может получить доступ к защищенным членам родительского класса, но не может получить доступ к открытым членам родительского класса;
  • Частное наследование: подкласс наследует частные члены родительского класса; он не может получить доступ к общедоступным и защищенным членам родительского класса;

Для классов, определенных с использованием ключевого слова struct, метод наследования членов по умолчанию является открытым.

// 默认是 public 继承  
struct Student : public Person {
    
     
    // ...  
};  

Для классов, определенных с помощью ключевого слова class, метод наследования членов по умолчанию является закрытым;

// 默认是 private 继承  
class Teacher : private Person {
    
     
    // ...  
};

4. Рекомендуемое использование ключевых слов struct и class.


В реальной разработке рекомендуется использовать ключевое слово class для определения класса и ключевое слово struct для определения структуры;

Supongo que te gusta

Origin blog.csdn.net/han1202012/article/details/132767275
Recomendado
Clasificación