ex7-6.cpp - Example 7-6 Private inheritance

// Example 7-6 - private inheritance

#include <iostream>
#include <string>
using namespace std;

class name : private string
{
public:
	name(const char *);
	void print() const;
	string first_last() const;
	string initials() const;
	void change_last(const string& new_last);
};

name::name(const char* n) : string(n) {}

void name::print() const {
	cout << c_str() << ".\n";
}

string name::first_last() const {
	size_t comma_pos = find(',');
	size_t second_space = find_last_of(' ');
	return substr(comma_pos+2,second_space-comma_pos-2) + ' ' + substr(0,comma_pos);
}

string name::initials() const {
	string inits;
	inits = data()[find(',')+2];
	return inits + data()[length()-1] + *data();
}

void name::change_last(const string& new_last) {
	replace(0,find(','),new_last);
}

int main() {
	name joe("Bentley, Joseph E");
	joe.print();
	cout << joe.first_last() << endl;
	cout << joe.initials() << endl;
	joe.change_last("Smith");
	joe.print();
	return 0;
}




CIS27: Programming in C++    Instructor: Joe Bentley