Namespaces are a relatively new C++ feature just now starting to appear in C++ compilers. We will be describing some aspects of namespaces in subsequent newsletters.
What problem do namespaces solve? Well, suppose that you buy two different general-purpose class libraries from two different vendors, and each library has some features that you'd like to use. You include the headers for each class library:
- An Introduction to C++ Programming
C++ is a programming language substantially different from C. Many see C++ as "a better C than C," or as C with some add-ons. I believe that to be wrong, and I intend to teach C++ in a way that makes use of what the language can offer. C++ shares the same low level constructs as C, however, and I will assume some knowledge of C in this course. You might want to have a look at the C introduction course to get up to speed on that language.
- C++ Annotations Version 5.1.0b
This document presents an introduction to programming in C++. It is a guide for C/C++ programming courses, that Frank gives yearly at the University of Groningen. As such, this document is not a complete C/C++ handbook, but rather serves as an addition to other documentation
sources. The version number of this document (currently 5.1.0b) is updated when the contents of the document change. The first number is the major number, and will probably not be changed for some time: it indicates a major rewriting. The middle number is increased when new information is added to the document. The last number only indicates small changes; it is increased when, e.g., series of typos are corrected.
This tutorial teaches the C++ programming language but assumes that the student has already attained a reasonable proficiency in C programming. It is composed of 12 chapters which should be studied in order since topics are introduced in a logical order and build upon topics introduced in previous chapters. It is to the students benefit to download the source code for the example programs, then compile and execute each program as it is studied. The diligent student will modify the example program in some way, then recompile and execute it to see if he understands the material studied for that program. This will provide the student with valuable experience using his compiler.
- Introduction to Object-Oriented Programming Using C++
This tutorial is a collection of lectures to be held in the on-line course Introduction to Object-Oriented Programming Using C++ . In this course, object-orientation is introduced as a new programming concept which should help you in developing high quality software. Object-orientation is also introduced as a concept which makes developing of projects easier. However, this is not a course for learning the C++ programming language. If you are interested in learning the language itself, you might want to go through other tutorials, such as C++: Annotations by Frank Brokken and Karel Kubat. In this tutorial only those language concepts that are needed to present coding examples are introduced.
C++ is a programming language of many different dialects, similar to the way that each spoken language has many different dialects. In C++, dialects are not because the speakers live in the North or South. Instead, it is because there are many different compilers that support slightly different features. There are several common compilers: in particular, Borland C++, Microsoft C++, and GNU C++. There are also many front-end environments for the different compilers--the most common is Dev-C++ around GNU's G++ compiler. Some, such as G++, are free, while others are not. Please see the compiler listing for more information on how to get a compiler and set it up.
CPlusPlus Language Tutorial
These tutorials explain the C++ language from its basics up to the newest features of ANSI-C++, including basic concepts such as arrays or classes and advanced concepts such as polymorphism or templates. The tutorial is oriented in a practical way, with working example programs in all sections to start practicing each lesson right
away. This tutorial is for those people who want to learn programming in C++ and do not necessarily have any previous knowledge of other programming languages. Of course any knowledge of other programming languages or any general computer skill can be useful to better understand this tutorial, although it is not essential.
- An Introductory STL tutorial
STL provides a template based set of collection classes, and methods for working on those collections. The collection classes give the developer access to fast and efficient collections. While the methods, which are known as the algorithms, provide template based collection manipulations functions.
The benefits of STL include
Type safe collections
Ease of use
- C++: A Historical Perspective
We begin our journey of C++ with a little history. C, the predecessor to C++, has become one of the most popular programming languages. Originally designed for systems programming, C enables programmers to write efficient code and provided close access to the machine. C compilers, found on practically every Unix system, are now available with most operating systems.
During the 1980s and into the 1990s, an explosive growth in object-oriented technology began with the introduction of the Smalltalk language. Object-Oriented Programming (OOP) began to replace the more traditional structured programming techniques. This explosion led to the development of languages which support programming with objects. Many new object-oriented programming languages appeared: Object-Pascal, Modula-2, Mesa, Cedar, Neon, Objective-C, LISP with the Common List Object System (CLOS), and, of course, C++. Although many of these languages appeared in the 1980s, many ideas of OOP were taken from Simula-67.
to C and C++
If you're interested in learning about C or C++, this is the place. We have a series of online courses and tutorials that will teach you either language from the start.The C programming language was developed at Bell Labs during the early 1970's. Quite unpredictably it derived from a computer language named B and from an earlier language BCPL. Initially designed as a system programming language under UNIX it expanded to have wide usage on many different systems.
Bjarne Stroustrup at Bell Labs initially developed C++ during the early 1980's. It was designed to support the features of C such as efficiency and low-level support for system level coding.
Programming Language Tutorial
C++NPv1 describes how middleware and the ACE toolkit help address key challenges associated with developing networked applications. We review the core native OS mechanisms available on popular OS platforms and illustrate how C++ and patterns are applied in ACE to encapsulate these mechanisms in class library wrapper facades that improve application portability and robustness. The book's primary application example is a networked logging service that transfers log records from client applications to a logging server.
Const is your most powerful anti-crash weapon. Use it at every opportunity. An additional benefit is that it makes your code self-documenting. For instance, look at this:
const char *add2strings(const char *sz1, const char *sz2);
Such a declaration guarantee's that no matter what wierd things go on within the function, it can't harm the application programmer's two strings sz1 and sz2. If any memory corruption occurs, it will be to variables within the function's scope. This, of course, greatly reduces side effect bugs. Of course, if the program has global variables, all bets are off.
- C++ tutorial for C users
This text enunciates and illustrates features and basic principles of C++. It is aimed at experienced C users who wish to learn C++. It can also be interesting for beginner C++ users who leaved out some possibilities of the language.
There is a new way to #include libraries (the old method still works yet the compiler roars). The .h extension is no more written and the names of standard C libraries are written beginning with a c. In order for the program to use these libraries correctly using namespace
- C++ Tutorial - FunctionX
C++ is a language used to communicate with the computer. It works by writing a series of instructions that another program, called a compiler, can analyze and "transmit" to the machine. This site provides lessons, topics, and links that teach how to use this computer language.
This is an update to the numeric systems used in computer applications, including the decimal, the binary, and the hexadecimal formats. This review also includes techniques of converting a number from one system to another.
Function Pointer Tutorials
Function Pointers provide some extremely interesting, efficient and elegant programming techniques. You can use them to replace switch/if-statements, to realize your own late-binding or to implement callbacks. Unfortunately - probably due to their complicated syntax - they are treated quite stepmotherly in most computer books and documentations. If at all, they are addressed quite briefly and superficially. They are less error prone than normal pointers cause you will never allocate or deallocate memory with them. All you've got to do is to understand what they are and to learn their syntax. But keep in mind: Always ask yourself if you really need a function pointer.
An interface encapsulates a coherent set of services and attributes (broadly, a Role), without explicitly binding this functionality to that of any particular object. In general, one object may support several interfaces, and conversely, one interface may be implemented by several objects working in tandem. CORBA IDL is probably the best-known (but very impure) example of an IDL. IBM SOM is in part an IDL, but also contains additional features; many akin to the C++ variants described below.
OO Interfaces may be described as structured collections of operations, where each operation has a name and a type. The type is described as a signature of arguments and results, perhaps along with some indication of of semantics (e.g., preconditions and postconditions) and/or protocols (e.g., descriptions of client-visible events such as callbacks produced upon invocation -- see for example PSL ).
- C++ as a Data Abstraction Language
Classically, an abstract data type (ADT) is an idealization of a set of values, along with a set of functions and relations on these values that together constitute a type. Simple examples include Integers, Complexes, Sets, Lists, and so on.
Programming styles and practices in pure ADT-based languages (like ML) differ in many ways from those in pure OO languages. C++, not being very pure about anything, supports various mixtures. This is nice in some ways but confusing in other ways.
Pure ADT programming is value-oriented rather than object-oriented. The basic rules of value-oriented programming are that you are never allowed to care about (or in most ADT languages, even to discover) which object is being used to represent something; you only care about the symbolic meaning of the value itself. Named variables are considered to be bound to different values; and are not considered to be handles to objects.
- Translating OO models and designs to C++
Even though we'll concentrate on bottom-level implementation matters, ideally, every Analysis/Design-level class should be represented in C++ as an abstract class. The reasons include:
Abstract classes enable progressive commitment during design and implementaion -- you don't have to ``bottom out'' with every. implementation decision at once. Only the bottommost ``leaf classes'' need be fully implemented.
Abstract classes allow you to defer commitment about implementation details that may change across contexts and time.
Classes that do not commit to representation details are normally easier to subclass and compose.
Abstract classes enable simpler reuse across applications by allowing you to construct sets of interoperable implementations.
The tutorials start with the most basic Windows program, the Windows equivalent of "Hello World!", Winnie. Then we move on to a more Generic program, which serves as a skeleton for a simple Windows application. Then we discuss various Controls. Using these controls one can build a complete dialog-based application, whose main window is a dialog. We are then ready to discuss a Generic Dialog, a framework with which one can quickly build specific dialogs.
Introduction to OO
This is my first actual tutorial on OOP, I will provide further details as time permits and with your suggestions. There is no link from my main page to here at present.With a sample program using classes and the various properties with regards to Object Oriented programming I hope it will be easier to learn this strange method of programming. Dont forget, use a decent C++ book as reference.
U will need a C++ compiler of some sort, if you are using Borland C++ 5.0 as I am then you will have no problem with the project here. Otherwise, please consult your manuals. Open the BC++ and select FILE - NEW - PROJECT from the tool bar at the top of the screen.
Select the options as shown below to allow the project to be compiled in a DOS standard. In this way, you do not need to worry about windows programming. Please right click and select view on any of the graphics enclosed if you need to see it clearer.
C++ is a third generation programming language. When computers were first invented, they were programmed with very simple, low-level commands. A programmer would design a program, then translate the program into a specific set of codes, known as machine language. These codes would be fed into a computer with switches, punch-cards, or primitive keypads. These programs were cumbersome to write, and very hard to debug. (Debugging is the act of removing mistakes in a program.) Machine code is considered the first generation of programming languages.
Welcome to FoosYerDoos programming and thanks for visiting. This website is devoted to win32 C++ programming with a variety of different compilers including but not necessarily limited to Borland BCC5.5 command line, mingw(DevC++ IDE) and msvc++. This site has example code for beginning level programmers with source code downloads available. Some knowledge of C++ classes would be helpful but is not essential.
If you have any suggestions, good or bad, about this site or the sample code then feel free to email Ken Fitlike. Your comments are appreciated.
Forger's Win32 API Tutorial
This tutorial attempts to get you started developing with the Win32 API as quickly and clearly as possible. It is meant to be read as a whole, so please read it from beginning to end before asking
questions. most of them will probably be answered. Each section builds on the sections before it. I have also added some solutions to common errors in Appendix A. If you ask me a question that is answered on this page, you will look very silly.
Getting Start Tutorial
This tutorial is intended to present to you the basics (and common extras) of writing programs using the Win32 API. The language used is C, most C++ compilers will compile it as well. As a matter of fact, most of the information is applicable to any language that can access the API, inlcuding Java, Assembly and Visual Basic. I will not however present any code relating to these languages and you're on your own in that regard, but several people have previously used this document in said languages with quite a bit of success.
This tutorial will not teach you the C language, nor will it tell you how to run your perticular compiler (Borland C++, Visual C++, LCC-Win32, etc...) I will however take a few moments in the appendix to provide some notes on using the compilers I have knowledge of.
Another Code Site
This site is dedicated to advancing the understanding of Borland's C++ Builder, the Borland Visual Component Library (VCL), and related Microsoft Windows API issues.
In particular, I have spent an inexcusable amount of time working through many of the problems associated with Rich Edit controls. Here you will find information on using OLE with Rich Edit controls, using the relatively unknown Rich Edit version 2.0, using the even newer Rich Edit version 3.0, answers to frequently asked questions about Rich Edit controls, and other information that I hope you will find useful.
This site is dedicated to Borland C++ Builder, the Visual Component Library, and those of us who have come to love it, even to think that it is the best thing since the Sneakers bar. We provide lessons, guides, and links on how to take advantage of this finely defined programming environment.
The Win32 library defines a window as a rectangle object that displays on the screen. In order to give presence to such an object, its window must be explicitly created. There are two main categories of windows you will need to create for your application: parents and children.
- Steve's Borland C++ Builder 3 Page
This section of my Builder web pages will present several tutorials on how to do things in Builder. The type of tutorials will range from beginner to advanced, but will not contain the type of tutorials contained in the Teach Yourself Borland C++ Builder 3 in 14 days. If you need this kind of tutorials, then read the book.
As this is a very new page, I am still experimenting heavily with the contents of the tutorials, and the level of skill required for each. If anybody feels that a tutorial is too hard, or too easy for the level I gave it, then please email me. Also, if the tutorials are too hard to follow, then I would be interested in feedback on this.
is Dev-C++ Tutorial
Dev-C++, developed by Bloodshed Software, is a fully featured graphical IDE (Integrated Development Environment), which is able to create Windows or console-based C/C++ programs using the MinGW compiler system. MinGW (Minimalist GNU* for Windows) uses GCC (the GNU g++ compiler collection), which is essentially the same compiler system that is in Cygwin (the unix environment program for Windows) and most versions of Linux. There are, however, differences between Cygwin and MinGW; link to Differences between Cygwin and MinGW for more information.
- Using the Borland 5.5 Compiler and command-line tools
The free Borland 5.5 Compiler and command-line tools has, so far, been a great success. At this time of writing,less that a month after we made it available, we have had hundreds of thousands of downloads.
I have also received hundreds of emails asking me how to install and use these tools but there is not really an install, per se. Rather, simply unzip the contents of the package and you are almost ready to
go. Bin is short for binaries. Under this directory you will find all of the command-line tools (as well as RTL and STL dynamic libraries). These are 32-bit Windows exectuable, command-line programs, which means if you double click on one of them from Windows Explorer you are likely to see a flashing DOS box, that comes up and immediately goes away. These applications are meant to be run from within a DOS shell. Meaning, you need physically move to the Bin directory and type the name of the program that you want to run (unless this directory is first in your path).
Cygwin is a free software package that provides an Unix-like environment on your PC. It includes many of the Free Software Foundation's (GNU) development tools for C and C++ programming. The gcc compiler, gdb debugger, vi editor, man pages and many of the standard Unix utilities are available. Cygwin provides a free, reasonably easy to use alternative to commercial products such as Microsoft's Visual C++. On the downside, it lacks a full integrated development environment, as is present in Visual C++. An IDE provides an editor, compiler and debugger all in one, along with menus. With Cygwin all commands are typed at a command prompt, and separate programs are used to edit, compile and debug, so it is a little harder to use.
- Installing Borland's 5.5 Compiler
Borland offers its 5.5 compiler for C and C++ for free. This compiler forms the core of Borland's C++ Builder 5, which is a complete integrated development environment. This compiler provides a free, reasonably easy to use alternative to commercial products such as Microsoft's Visual C++ and Borland's C++ Builder. On the downside, it lacks a full integrated development environment, as is present in the commercial products. An IDE provides an editor, compiler and debugger all in one, along with menus. With the free 5.5 compiler all commands are typed at a MS DOS command prompt, and a separate program, such as Notepad, is used to edit. As a result it is a little harder to use.
- Borland C++ 5.02 Tutorial
The aim of these tutorials is introduce the essential features of the Borland C++ programming environment. Although this tutorial uses Borland C++ version 5.02, many of the concepts presented here are also valid for other development platforms.
The world of programming evolves rapidly. Last year we used Turbo C++ v 4.5, today we are using Borland C++ v5.02. All that we are sure of future is that it will be different from today. I have just adapted the tutorial from last year for this year. There are sure to be all kinds of inadvertent errors from simple typos to more confusing ones. I ask you to e-mail comments and questions as soon as you identify them. I will try to respond by fixing these notes asap. You can tell whether or not you have the latest version by looking at the revision date at the top of the file.