A question about complier for C++
Wed Jun 25 15:57:00 GMT 2008
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
> 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".)
More information about the Gcc-help