Should you employ this pointer in the constructor?, C/C++ Programming

Should you employ this pointer in the constructor?

Posted Date: 3/15/2013 6:01:46 AM | Location : United States





A: Some of people feel you must not use the pointer in a constructor since the object is not fully formed yet. Though, you can use this in the constructor (in the {body} and even in the initialization list) if you are careful.

Here is something which always works: the {body} of a constructor (or a function called from the constructor) can access reliably the data members declared in a base class and/or the data members declared in the constructor''s own class. It is because all of those data members are guaranteed to have been completely constructed by the time the constructor''s {body} starts executing.

Here is something which never works: the {body} of a constructor (or a function called from the constructor) can''t get down to a derived class via calling a virtual member function i.e. overridden in the derived class. If your aim was to obtain to the overridden function in the derived class, you won''t obtain what you wish. Note down that you won''t get to the override in the derived class independent of how you call virtual member function: explicitly via the this pointer (for example this->method()), implicitly using this pointer (for example method()), or even calling some other function which calls the virtual member function onto your this object. The bottom line is this: even if the caller is building an object of a derived class, throughout the constructor of the base class, your object is not still of that derived class.

Here is something which sometimes works: if you pass any data members in this object to another data member''s initialize, you have to ensure that the other data member has already been initialized. You can determine whether the other data member has (or has not) been initialized by using some straightforward language rules which are independent of the particular compiler you''re utilizing. The bad news is that you ought to know those language rules (for example: base class sub-objects are initialized first (look up the order if you have multiple and/or virtual inheritance!), then data members described in the class are initialized in the order wherein they appear in the class declaration). If you don''t know about these rules, then don''t pass any data member from the object (regardless of whether or not you use explicitly this keyword) to any other data member''s initializer! And if you do know about the rules, be careful please.

 

Posted by | Posted Date: 3/15/2013 6:02:15 AM


Related Discussions:- Should you employ this pointer in the constructor?, Assignment Help, Ask Question on Should you employ this pointer in the constructor?, Get Answer, Expert's Help, Should you employ this pointer in the constructor? Discussions

Write discussion on Should you employ this pointer in the constructor?
Your posts are moderated
Related Questions
Virtual Webcam effects - Setup and Source code with Nice User Interface Project Description: I want a similar webcam effects application which can apply effects to webcam fee

Write a program to find the area under the curve y = f(x) between x = a and x = b, integrate y = f(x) between the limits of a and b. The area under a curve betw

Friend function in c++: class miles; class km  {    float value;    public :   // void input();     km convert(km  ,int a ) ;    void output()    {

I want a PROGRAM - Facebook auto like system to increase fans to different fanpage It has in a program that take Facebook mails and passwords from a excel file (.xlsx) for examp

Is it legal for a member function to say delete this? A: As long as you're cautious, it's OK for an object to delete this. Here's how I define "cautious": You have to be a

Project Description: I want an experienced programmer to program an RFID tag that will be read (maybe also written), and perform a call to a Filmmaker Pro 13 database. Skills

main() { int a[5]={1,3,6,7,0}; int *b; b=&a[2]; } The value of b[-1] is

Project Description: I posted listings on a site that is like eBay but for video games. I post the similar listing many times daily, but need something that will let me post

Smugglers are becoming very smart day by day. Now they have developed a new technique of sending their messages from one smuggler to another. In their new technology, they are send