Chapter 6 Classes and data abstraction 1. Structures are aggregate data types built using data of other data types. 2. The keyword struct introduces a structure definition. The body of a structure is delineated by braces. Every structure definition must end with a semicolon. 3. A structure tag can be used to declare variables of a structure type. 4. Structure definition do not reserve space in memory. They create new data type which is used to declare variables. 5. Members of a structure or class are accessed using the member access operators -- the dor operator and the arrow operator. 6. Class enable the programmer to model objects with attributes and behaviors. 7. The class name can be used to declare the objects of that class. 8. Class definition begins with the keyword class. The body of the class is delineated with braces. Class definition terminate with semicolon. 9. Any data member or member function declared after public: in a class is visible to any function with access to an object of the class. 10. Any data member or member function declared after private: in a class is visible to friends and other member functions of the class. 11. Private data are not accessible from outside of the class. 12. The implementation of a class should be hidden from its clients. 13. A cinstructor is a special member function with the same name of the class that is used to initialize the data members of the a class object. A class's constructor is called when an object of the class is instantiated. 14. The function with the same name of the class but preceded with a tilde operator (~) is called a destructor. 15. The set of public member functions of a class is called the class's interface or public interface. 16. When a member function is defined outside of the class definition, the function name is preceded by the class name and the binary scope resolution operator ::. 17. Calling functions defined is more concise than calling functions in procedural programming because most data used by the member function is directly accessible in the object. 18. Within a class's scope, class members may be referenced simply by their name, Outside a class's scope, class memebrs are referenced by either an object name, a reference to an object, or by a pointer to an object. 19. A fundamental principle of good software engineering is to separate interface from implementation. 20. The default access mode for class is private. 21. A class's public members presents a view of the services the class provides to the clients of the class. 22. Access to the class's private data can be carefully controlled by the use of functions called access functions. If the class wants to allow clients to read private data, the class can provide the get function. If the class wants to allow clients to modify the private data, the class can provide the set function. 23. Data members of a class are normally made private, the member functions of a class are normally made public. 24. Data member of a class can not be initialized in the class definition, it must be initialized in the constructor or set after their object is created. 25. Constructors can be overloaded and can specify default arguments. 26. Constructors can not specify return values, nor can they attempt to return values. 27. Destructors do not receive parameters and do not return values. A class may have only one destructor. Destructor can not be overloaded. 28. Structures are ordinarily passed by call-by-value. To avoid the overhead of copying a structure, pass the structure call-by-reference. 29. To avoid the overhead of call-by-value yet still gain the benefit that the caller's original data is protected from the modification, pass the large-size arguments as const reference. 30. A central theme of s/w develop is "reuse, reuse, and reuse".