...
Non-Compliant Code Example
This code example is non-compliant because of the unintended data loss.
Code Block | ||
---|---|---|
| ||
class Employee { public: Employee(string theName) : name(theName) {}; string getName() const {return name;} virtual void print() const { cout << "Employee: " << getName() << endl; } private: string name; }; class Manager : public Employee { public: Manager(string theName, Employee theEmployee) : Employee(theName), assistant(theEmployee) {}; Employee getAssistant() const {return assistant;} virtual void print() const { cout << "Manager: " << getName() << endl; cout << "Assistant: " << assistant.getName() << endl; } private: Employee assistant; }; int main () { Employee coder("Joe Smith"); Employee typist("Bill Jones"); Manager designer("Jane Doe", typist); coder = designer; // slices Jane Doe! coder.print(); } |
...