- 注册时间
- 2005-2-11
- 最后登录
- 1970-1-1
|
楼主 |
发表于 2007-12-4 11:01:24
|
显示全部楼层
- #include <stdio.h>
- class A
- {
- public:
- char *p;
- char q;
- public:
- A()
- {
- p = 0;
- printf("AAAA\n");
- }
- ~A()
- {
- //if (p)
- //{
- // delete p;
- // p = 0;
- //}
- printf("~AAAA\n");
- }
- };
- A a(A x)
- {
- *x.p = 1;
- x.q = 2;
- return x;
- }
- A &b(A x)
- {
- *x.p = 3;
- x.q = 4;
- return x;
- }
- A c(A &x)
- {
- *x.p = 5;
- x.q = 6;
- return x;
- }
- A &d(A &x)
- {
- *x.p = 7;
- x.q = 8;
- return x;
- }
- int main(int argc, int *argv[])
- {
- A i;
- A k;
- i.p = new char(2);
- i.q = 50;
- k = a(i);
- printf("%d %d\n", *k.p, k.q);
- k = b(i);
- printf("%d %d\n", *k.p, k.q);
- k = c(i);
- printf("%d %d\n", *k.p, k.q);
- k = d(i);
- printf("%d %d\n", *k.p, k.q);
- return 0;
- }
- /*
- *出现: AAAA
- * AAAA
- * ~AAAA
- * ~AAAA
- * 1 2
- * ~AAAA
- * 3 4
- * ~AAAA
- * 5 6
- * 7 8
- * ~AAAA
- * ~AAAA
- */
复制代码 函数A a(A x);执行赋值语句后要返回x,但是返回前要析构x,那怎么返回x?
执行k = a(i);后要析构? |
|