- 论坛徽章:
- 9
|
压根就 不调用什么复制或者移动构造函数,直接就只有一个对象
#include <stdio.h>
#include <iostream>
using namespace std;
class A
{
public:
int a;
A(){a = 1; printf ("NULL constructor: %u\r\n", a);}
A (int i){a = i; printf ("INT constructor : %u\r\n", a);}
A (A && aa){a = aa.a; a = a+1; printf ("rref constructor: %u %u\r\n", a, aa.a);};
A (A & aa){a = aa.a; a = a+1; printf ("Lref constructor: %u %u\r\n", a, aa.a);};
~A(){printf ("destructor: %u\r\n", a);};
};
A tt (void)
{
A a1(10);
return a1;
}
int main (void)
{
//A b = tt();
A b(tt());
b.a=b.a + 2;
printf ("main exiting\n");
return 0;
}
root@ubuntu:~# g++ -std=c++0x 1.cpp -o ./1
root@ubuntu:~#
root@ubuntu:~#
root@ubuntu:~# g++ -std=c++0x 1.cpp -o ./1
root@ubuntu:~#
root@ubuntu:~#
root@ubuntu:~#
root@ubuntu:~#
root@ubuntu:~#
root@ubuntu:~#
root@ubuntu:~#
root@ubuntu:~#
root@ubuntu:~#
root@ubuntu:~#
root@ubuntu:~#
root@ubuntu:~#
root@ubuntu:~#
root@ubuntu:~#
root@ubuntu:~# ./1
INT constructor : 10
main exiting
destructor: 12
root@ubuntu:~# |
|