+1 Bruce Eckel

-----Original Message-----
From: [email protected] [mailto:[email protected]] On 
Behalf Of Andy Pintar
Sent: March-20-12 10:56 PM
To: Montreal Linux Users Group
Subject: Re: [MLUG] Off Topic C++ course

On Tue, 20 Mar 2012, Patricia Campbell wrote:

> >From your email you are thinking in non OOP terms.  If you want to 
> >use C++
> you will have to switch your thinking a bit.  I recommend Deitel & 
> Deitel
> C++ any version > 5 will probably do for
> conceptshttp://www.amazon.com/How-Program-8th-Paul-Deitel/dp/013266236
> 1

Great advice as always, Patricia.  I'd recommend Bruce Eckel's "Thinking in 
C++" first and second volumes.
http://mindview.net/Books/TICPP/ThinkingInCPP2e.html

They're free, easy to read/follow, plenty of bite-sized examples, and I think 
much more intuitively organized than, say, the O'Reilly nutshell/programming 
books.

>  If I can do sizeof(structure) to get its size in memory. Can I do the 
> same of a class.  sizeof(class) ?

Structs and classes are the same, the only difference is public vs private by 
default.  But structs in C++ aren't the same as structs in C!  Read a thorough, 
detailed intro book and you'll see why thinking of C++ as an extension to C is 
a bad idea.  It is probably one of the greatest disservices to C programmers 
who want to learn C++, who think 'oh it's just some language extensions.'  But 
sizeof works as expected.

> One other question.  In C, I can do a memset(structure
address, 0, > sizeof(structure)), and that will zap the structure.

Don't do that!  Even in C!  Sure, for a struct that contains a pair of 
floats that's fine (some kind of point(x,y) struct).  But what about a 
linked list implementation?  If you have a linked list that cointains a 
{pointer to value, pointer to next item}, and you zap the head of your 
list, you didn't clean up the value or the other elements, just 2 
pointers.  What, you had thousands of items in that list?  And no way to 
accesss them?  Memory leak!  Same holds true in c++, that's why you have a 
destructor that you write which goes through each element explicitly.

But more importantly, why are you memsetting it to zero (in C)?  That 
makes no sense at all.. sure you could do it, but why not just set the 
struct's elements to zero?  Or if you want to 'delete' it, just let it 
fall out of scope...  Please share the point of that 'zap' and I or 
someone else can better explain an equivalent idea in C++.

> Can I put the structure within a class and do the same?  I think I am
> not able to do the memset(?class,0 sizeof(class))
> clearout because of private variables.

Structs=classes.  Sort of.  But don't go memsetting like that.  You're 
going to end up with really broken code really quickly.  If you think 
you're going to save some cycles, you're wrong.  Create a method, say 
'clear()', that sets internal class/struct state to "zero", or somesuch.


Check out Eckel's books.  Don't go into it thinking you can use any of 
your C knowledge (other than where to put a ';' or scope blocks inside '{' 
'}', etc).  It's a totally different approach that's designed to make it 
easier to represent abstract concepts more efficiently than in procedural 
C.  That doesn't mean the code is faster, although it often is for complex 
projects because it is more concisely defined than it could be in C.

Blah blah blah....
Sorry for the long post, I hope you find it helpful.
_______________________________________________
mlug mailing list
[email protected]
https://listes.koumbit.net/cgi-bin/mailman/listinfo/mlug-listserv.mlug.ca

Reply via email to