一道c++的考古题# Programming - 葵花宝典
M*q
1 楼
以前看到的,现在找不到了,大家给看看
int c1=0, c2=0, c3=0;
class A
{
public:
A() { c1++; }
A(const A&) { c2++; }
~A() { c3++; }
};
const A foo(const A c)
{
A ab= A(c);
return ab;
}
void main()
{
A a;
A d =foo(a);
cout << c1 << " " << c2 << " " << c3 << endl;
}
我在gcc上编译运行了一下,输出是 1 2 1
很难理解怎么答案是这个.哪位能解释一下吗?
int c1=0, c2=0, c3=0;
class A
{
public:
A() { c1++; }
A(const A&) { c2++; }
~A() { c3++; }
};
const A foo(const A c)
{
A ab= A(c);
return ab;
}
void main()
{
A a;
A d =foo(a);
cout << c1 << " " << c2 << " " << c3 << endl;
}
我在gcc上编译运行了一下,输出是 1 2 1
很难理解怎么答案是这个.哪位能解释一下吗?