Re: A question about complier for C++

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi John:
I understand it.
Thanks for your help :)




John Love-Jensen ??:
Hi Fan Lu,

And in my opinion, the constructor of base class (if defined) will
always be invoked in spite of whether the derived class has its own
constructor,

Correct.  And if the base class constructor is not explicitly identified in
the derived class's explicit constructor, the base class default constructor
will be used.

but the copy constructor and assignment operator in base class(if
defined) will not be invoked if the derived class has its own.
Is it right?

Re: copy constructor...
Correct, the derived class explicit copy constructor needs to explicitly
call the base class copy constructor (assuming that is the desired
behavior).  OTHERWISE, the base class default constructor will be used if
left implicit.

Re: assignment operator...
Correct, the derived class explicit assignment operator needs to explicitly
call the base class assignment, assuming the desired behavior is that the
base class assignment operator also be called.  OTHERWISE, the base class
will have the same member variable values that it had before the assignment
operator call (assuming nothing else has changed the state of those
variables in the derived class assignment operator).

You may want to take a look into using the std::swap technique to maintain
object state integrity during the assignment operation.  (q.v. Herb Sutter
"C++ Coding Standards" on std::swap, assignment operator, and "never fail".)

Sincerely,
--Eljay




[Index of Archives]     [Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

  Powered by Linux