# Lecture 3 --- Classes - Classes in C++; Types and defining new types; Example: A Date class; - Class declaration: member variables and member functions; Using the class member functions; - Member function implementation; Class scope; Classes vs. structs; Designing classes; - Defining a custom sort of class instances. ## 3.1 Types and Defining New Types - Every C++ object has a type (e.g., integers, doubles, strings, and vectors, etc., including custom types); and a class is a custom data type, also known as a user-defined data type. – The type tells us what the data means and what operations can be performed on the data. ## 3.2 C++ Classes - A C++ class group together variables and functions that operate on those variables. We call these variables *member variables*, and we call these functions *member functions*. - A C++ class consists of – a collection of member variables, usually private, and – a collection of member functions, usually public, which operate on these variables. - public member functions can be accessed directly from outside the class, - private member functions and member variables can only be accessed indirectly from outside the class, through public member functions. ## 3.3 Class scope notation ## 3.4 Constructors ## 3.5 Member Functions ## 3.6 Constant member functions ## 3.7 Classes vs. structs ## 3.8 Designing and implementing classes ## 3.9 Providing Comparison Functions to Sort ## 3.10 Operator Overloading ## 3.11 Exercises - [Leetcode problem 8: String to Integer (atoi)](https://leetcode.com/problems/string-to-integer-atoi/) - [Leetcode problem 211: Design Add and Search Words Data Structure](https://leetcode.com/problems/design-add-and-search-words-data-structure/) - [Leetcode problem 1662: Check If Two String Arrays are Equivalent](https://leetcode.com/problems/check-if-two-string-arrays-are-equivalent/)