/* Copyright (c) 1992 by AT&T Bell Laboratories. */ /* Advanced C++ Programming Styles and Idioms */ /* James O. Coplien */ /* All rights reserved. */ class String { public: // the public user interface to a String: // redefine "+" to mean catenation, two cases: friend String operator+(const char*, const String&); String operator+(const String&) const; int length() const; // length of string in characters // . . . . // other interesting operations // boilerplate member functions: String(); // default constructor String(const String&); // constructor to initialize a new // string from an existing one String& operator=(const String&); // assignment ~String(); // destructor /* * These operators are typical of the kinds of customized * behaviors a user can define for a type. These are * examples suitable for a String class. */ String(const char *); // initialize from a "C string" private: char *rep; // implementation data and // internal functions // (here, represent internals // as a good old C string) };