C++ (direct vs indirect initialization)# Programming - 葵花宝典
b*d
1 楼
The codes following yields results:
ctor
non-const
const
Which I think it is wrong.
It should be
ctor
non-const
non-const
const
////////////////
using namespace std;
class A
{
public:
A(const A&){ cout << "const" << endl;};
A(A&){cout << "non-const" << endl;};
A(){cout << "ctor" << endl;};
static const long i = 1;
static double k;
};
double A::k;
int _tmain(int argc, _TCHAR* argv[])
{
A a = A();
A& b = a;
const A& d = b;
A c(b);
A e(d);
return 0;
}
ctor
non-const
const
Which I think it is wrong.
It should be
ctor
non-const
non-const
const
////////////////
using namespace std;
class A
{
public:
A(const A&){ cout << "const" << endl;};
A(A&){cout << "non-const" << endl;};
A(){cout << "ctor" << endl;};
static const long i = 1;
static double k;
};
double A::k;
int _tmain(int argc, _TCHAR* argv[])
{
A a = A();
A& b = a;
const A& d = b;
A c(b);
A e(d);
return 0;
}