class B {
public:
B() :
p{0}
{
std::cout << "B default ctr\n";
}
B(const B& b):
p{b.p}
{
std::cout << "B copy ctr\n";
}
B& operator =(const B& b) {
std::cout << "B = opr\n";
this->p = b.p;
return *this;
}
~B() {}
int p;
};
class A {
private:
B mB; //(3)
public:
A(B b) {
mB = b; //(4)
}
};
int main(int argc, char *argv[])
{
B b; //(1)
A a(b); //(2)
return 0;
}
在输出中我们得到:
B default ctr (1)
B copy ctr (2) - вызывается, т.к. объект B передаётся в конструктор A
не по константной ссылке
B default ctr (3) - вызывается при объявлении в классе A перед вызовом
тела конструктора А
B = opr (4)
在输出中我们得到: