Каталог статей
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
// ;protected
private
Существует три способа наследования подкласса от родительского класса:
- Открытое наследование public: подклассы наследуют открытые и защищенные члены родительского класса и могут предоставлять их внешнему миру как свои собственные открытые и защищенные члены;
- Защищенное наследование: подкласс наследует защищенные члены родительского класса.Подкласс может получить доступ к защищенным членам родительского класса, но не может получить доступ к открытым членам родительского класса;
- Частное наследование: подкласс наследует частные члены родительского класса; он не может получить доступ к общедоступным и защищенным членам родительского класса;
Для классов, определенных с использованием ключевого слова struct, метод наследования членов по умолчанию является открытым.
// 默认是 public 继承
struct Student : public Person {
// ...
};
Для классов, определенных с помощью ключевого слова class, метод наследования членов по умолчанию является закрытым;
// 默认是 private 继承
class Teacher : private Person {
// ...
};
4. Рекомендуемое использование ключевых слов struct и class.
В реальной разработке рекомендуется использовать ключевое слово class для определения класса и ключевое слово struct для определения структуры;