From: "A. Sinan Unur" Newsgroups: comp.os.msdos.djgpp Subject: Re: Can You help me about djgpp with c++ Date: 10 Sep 2001 23:28:22 GMT Organization: Cornell University Lines: 81 Sender: asu1 AT cornell DOT invalid (on slip-32-102-40-254.ny.us.prserv.net) Message-ID: References: <003201c13a3f$053b2f40$aa7ba8c0 AT fuego> NNTP-Posting-Host: slip-32-102-40-254.ny.us.prserv.net X-Trace: news01.cit.cornell.edu 1000164502 16129 32.102.40.254 (10 Sep 2001 23:28:22 GMT) X-Complaints-To: usenet AT news01 DOT cit DOT cornell DOT edu NNTP-Posting-Date: 10 Sep 2001 23:28:22 GMT User-Agent: Xnews/4.06.22 To: djgpp AT delorie DOT com DJ-Gateway: from newsgroup comp.os.msdos.djgpp Reply-To: djgpp AT delorie DOT com "Gorden" wrote in news:003201c13a3f$053b2f40$aa7ba8c0 AT fuego: > I Buy a book (Teach Yourself C++, 3rd Edition By Herbert Schildt) > inside have a C++ smaple I modified your code as follows: #include class Sample { private: int i; public: Sample() { std::cout << "Constructor" << std::endl; } Sample(const Sample& src) { i = src.i; std::cout << "Copy constructor" << std::endl; } Sample& operator=(const Sample& rhs) { if( &rhs != this ) { i = rhs.i; } std::cout << "Assignment operator" << std::endl; return *this; } ~Sample() { std::cout << "Destructor " << std::endl; } void set(int n) { i = n ; } int get(void ) { return i; } }; int test(Sample o) { return o.get() * o.get(); } int main(void) { Sample aSample; aSample.set(10); std::cout << test(aSample) << std::endl; return 0; } When compiled and run, this code produces the following: C:\var>gpp t.cc -o t.exe -Wall C:\var>t Constructor Copy constructor Destructor 100 Destructor You can see that your original code was missing the copy constructor, and the compiler was creating an extra copy for the test function call. Incidentally, compiling your original code with -O3 gets rid of this extra copy. I guess the compiler, in the absence of aggressive optimization or a copy constructor is creating am extra temporary. Sinan. -- -------------------------------- A. Sinan Unur http://www.unur.com/