我遇到了一些看起来像这样的代码:
class Cents
{
private:
int m_nCents;
public:
Cents(int nCents) : m_nCents(nCents)
{
}
};
int main(){
Cents c = 0; // why is this possible?
}
为什么可以从int转换为类Cents的类型?另外,在这种情况下是否调用了复制构造函数?
答案 0 :(得分:1)
为什么可以从int转换为类Cents的类型?
这是允许的,因为它有时候很方便。但它也可能有问题:这就是为什么你可以通过创建类构造函数<div class="form-group">
<label th:for="ftpConnection">FTP Connection:</label>
<select class="form-control" name="ftpId" >
<option th:each="ftpConnection : ${ftpList}"
th:value="${ftpConnection.getId()}"
th:text="${ftpConnection.getDescription()}">
</option>
</select>
</div>
来禁止这种隐式构造。
另外,在这种情况下是否调用了复制构造函数?
因为它是一个右值,所以调用将是一个移动构造函数/赋值(它可以回退到复制文件/赋值);但编译器可能会省略它。如果您明确地写了它,它将等同于:
explicit