doon@sdcrdcf.UUCP (Harry W. Reed) (02/26/86)
Hi, my question for all you C++ programmers out there in netland is ... "What good is C++ if I already have C ?" and "What makes' C++ better than C ?" Harry Reed {allegra, ihnp4, cbosgd, hplabs, burdvax}!sdcrdcf!doon
keith@cecil.UUCP (keith gorlen) (02/28/86)
>Hi, my question for all you C++ programmers out there in netland is ... > > "What good is C++ if I already have C ?" > > and > > "What makes' C++ better than C ?" "C++ is a superset of C that retains the efficiency and notational convenience of C, while providing facilities for: type checking, data abstraction, operator overloading, and object-oriented programming." - from the back cover of "The C++ Programming Language" What does this mean? It means that: If you write: 'fprintf("error in line &d",lnum)', you get an error message from the compiler instead of a core dump. You can define new data types of your own, and use them much like the built-in types; for example, you can easily define a type String to manage variable-length character strings in the free store. Then you can overload the operator "&" to do an inline call to "strcat", overload the function call operator "()" to do substring extraction, overload the comparison operators "==", "!=", "<", ">", "<=", and ">=" to do appropriate inline calls to strcmp, etc. You can even tell the compiler how to convert char* strings to and from your own type String. The result is that you can write statements like: String s, t("abcdef"), u("123"); // declare three Strings s = t(0,3) & u; // s = "abc123" s(1,2) = "xy"; // s = "axy123" if (s != "abcdef") // compare s to "abcdef" open(s & ".dat",0); // open the file "axy123.dat" cout << s << "\n"; // write "axy123\n" to standard output The object-oriented programming features (derived classes and virtual functions) allow you to implement very general data structures and functions (sometimes called "polymorphic" data structures and functions). You can easily implement a general-purpose hash table class, for example, that will work for anything you would ever care to put in it. For more information on this style of programming I would recommend the following references: Byte, Vol 6 No 8. August 1981. (the SMALLTALK-80 issue) Brad J. Cox: "Object-Oriented Programming in C" Unix Review, October/November 1983. Brad J. Cox: "Object-Oriented Programming: A Power Tool for Software Craftsmen" Unix Review, February/March 1984. Brad J. Cox: "Message/Object Programming: An Evolutionary Change in Programming Technology" IEE Software. Vol 1 No 1 January 1984. [Note: in one of these papers an erroneous statement is made concerning C++ and dynamic binding.] And, of course, Bjarne Stroustroup's "The C++ Programming Language" -- --- Keith Gorlen Computer Systems Laboratory Division of Computer Research and Technology National Institutes of Health Bethesda, MD 20892 phone: (301) 496-5363 uucp: {decvax!}seismo!elsie!cecil!keith