我正在尝试了解转换构造函数。我正在使用以下代码
class cls
{
public:
cls()
{
std::cout << "Regular constructor \n"; ---> Line A
}
cls (int a) //Constructing converter
{
std::cout << "Int constructor \n"; ---> Line B
}
cls (cls& d) //Copy constructor
{
std::cout << "Copy constructor \n"; ---> Line C
}
};
int main()
{
cls d;
std::cout << "-----------------------\n";
cls e = 15; //int constructor then copy constructor
return;
}
现在我对声明感到困惑,cls e = 15
我的理解是该声明假设调用 Line B(Conversion Cont) 然后调用 Line C (Copy constructor) 但是它只调用 Line B. 我虽然cls e = 15
相当于cls e = cls(15)
. 所以我尝试cls e = cls(15)
了它也只给出了 B 行。如果有人能解释当我们使用以下内容时会发生什么,我将不胜感激
cls e = cls(15)
//我期待一个转换构造函数,然后是复制构造函数,但显然我错了。任何关于正在发生的事情的解释将不胜感激