关于复制构造函数,这个问题是g++自动优化造成的吗?
先上代码,然后说问题:
Integer.h
class Integer
{
public :
Integer(int i=0);
~Integer();
Integer(const Integer &);
void setInteger(int i);
int getInteger() const;
private:
int value;
};
#include "Integer.h"
#include <iostream>
using namespace std;
Integer::Integer(int i)
:value(i)
{
cout << " in constructor" << endl;
}
Integer::~Integer(void)
{
cout << " in des constructor" << endl;
}
Integer::Integer(const Integer &integer)
{
cout << "in copy mode...." << endl;
}
void Integer::setInteger(int i)
{
value = i;
}
int Integer::getInteger() const
{
return value;
}
#include "Integer.h"
#include <iostream>
using namespace std;
Integer callInteger()
{
//Integer *integer = new Integer(10);
Integer integer(10);
int in = integer.getInteger();
cout << in << endl;
cout << "in func call integer:" << &integer << endl;
return integer;
}
int main()
{
Integer i = callInteger();
cout << "in main:" << &i << endl;
cout << "hello...." << endl;
getchar();
}
in constructor,
10
in func call integer:0x7fff4309e110
in main:0x7fff4309e110
hello ....
in des constructor
in constructor
10
in func call integer:0039F6B8
in copy mode....
in des constructor
in main:0039F7AC
hello....
in des constructor