From last week's quick introduction to C++ (a private course - half a day added on to the end of a
C Programming course - an example of how C++ implements objects for a newcomer to C++ who's seen some Python.
Firstly, in C++ you must predefine the API - the interface between the user and the class. And also the member variables and methods of each object type too:
class train {
public:
train(char *, int, int) ;
int getpeeps();
private:
int length;
int seats; };
Methods are defined in a similar way. In C++, there's no need to declare the object variable as a parameter (in fact you must not do so), but in the other hand you need to declare the class name on the front of each method. And the constructor is a method with the same name as the class. So:
train::train(char *dest, int length, int spc) {
this->length = length;
this->seats = spc; }
int train::getpeeps() {
return (int)(this->length * this->seats * 1.4); }
Now for the application. You can create objects in several ways in C++; I chose to use the
new keyword as it allocates memory on the heap in a similar way to Python allocates memory to objects
swindon = new train("Swindon",5,83);
cheltenham = new train("Cheltenham Spa",1,75);
And I can access that data via an object method.
cattle = swindon->getpeeps();
cout << "can take " << cattle << " to Swindon" << endl;
cattle = cheltenham->getpeeps();
cout << "can take " << cattle << " to Cheltenham" << endl;
If you prefer the "." notation of Python, I could replace
cattle = swindon->getpeeps();
with
cattle = (*swindon).getpeeps();
but that gets messy.
Complete C++ source code
[here].
(written 2013-07-01, updated 2013-07-15)
Associated topics are indexed as below, or enter http://melksh.am/nnnn for individual articles
Y106 - Object Oriented Python [477] Class, static and unbound variables - (2005-10-25)
[834] Python makes University Challenge - (2006-08-15)
[900] Python - function v method - (2006-10-20)
[1306] Python class rattling around - (2007-08-16)
[1348] Screw it or Glue it? Access to Object variables - a warning - (2007-09-12)
[1925] Introduction to Object Oriented Programming - (2008-12-06)
[2017] Python - a truly dynamic language - (2009-01-30)
[2169] When should I use OO techniques? - (2009-05-11)
[2604] Tips for writing a test program (Ruby / Python / Java) - (2010-01-29)
[3085] Object Oriented Programming for Structured Programmers - conversion training - (2010-12-14)
[3399] From fish, loaves and apples to money, plastic cards and BACS (Perl references explained) - (2011-08-20)
[3436] Moving from scripting to Object Orientation in Python - (2011-09-13)
[3673] Object oriented or structured - a comparison in Python. Also writing clean regular expressions - (2012-03-26)
[3878] From Structured to Object Oriented Programming. - (2012-10-02)
[3947] this or self - what are they, and what is the difference? (Python) - (2012-12-08)
[4021] Spike solution, refactored and reusable, Python - Example - (2013-02-28)
[4028] Really Simple Class and Inheritance example in Python - (2013-03-04)
[4448] What is the difference between a function and a method? - (2015-03-04)
[4591] From single block to structure and object oriented programming - (2015-12-02)
[4650] Why populate object with values as you construct them? - (2016-02-18)
[4721] When to check an object type - Python isinstance example - (2016-11-03)
C232 - C and C based languages - Defining and using classes in C++ [2577] Complete teaching example - C++, inheritance, polymorphism - (2010-01-15)
[2578] Where are your objects stored in C++? - (2010-01-16)
[2579] Creating, setting up and using objects in C++ - (2010-01-16)
[3250] C++ - how we teach the language and the concepts behind the language - (2011-04-17)
[3716] Learning C++ - a design pattern for your first class - (2012-05-02)
[3721] Naming blocks of code, structures and Object Orientation - efficient coding in manageable chunks - (2012-05-06)
[3810] Reading files, and using factories to create vectors of objects from the data in C++ - (2012-07-21)
[3978] Teaching OO - how to avoid lots of window switching early on - (2013-01-17)
[4372] Template / design pattern for C++ constructor and accessors - (2014-12-29)
[4565] Allocation of memory for objects in C++ - Stack v Heap - (2015-10-31)
Some other Articles
In the hills above Harlech, and on the coast tooUsing your own laptop on our courses - now even easier!West Coast (of Wales) - railway and stations in picturesSoft furnishings up a Welsh MountainSimple OO demonstration in C++, comparison to PythonAllocating memory dynamically in a static language like CExploring the area ... Ynys, near HarlechWhere are we now? On holiday!The first Luas of the morningChippenham - Melksham - Trowbridge bus changes next month