为什么不允许施工人员进行重新认证?

时间:2017-03-03 16:01:03

标签: c++ c++11

为什么建造者无法重新认证?此代码将无法编译:

<?php
   require('fpdf/fpdf.php');

   $pdf = new FPDF('P','mm',array(45,10));
   $pdf->SetMargins(0,5,0);    
   $pdf->AddPage('L');
   $pdf->SetFont('Arial','B',9);
   $pdf->Cell(0, 0,'ASERJFBJGFJSFDS');
   $pdf->Output('label','I');
?>
  

错误:构造函数可能不符合参考资格

1 个答案:

答案 0 :(得分:4)

Rvalue - this限定能够区分val.func()std::move(val).func()Type().func()(前者调用&,后者调用{{ 1}})。这使您可以明确&&可以从func的内容中移除。

但是在构造函数中,您正在初始化对象。从*this的内容移开是没有意义的,因为对象仍在初始化。

因此,想要限定构造函数的唯一可能原因是让构造函数区分构造临时值和构造非临时值。而这种分化总体上毫无意义。而且很危险。

保证省略,这是自我失败。因为感谢C ++ 17的保证省略,*this根本不会产生临时性。它只是初始化auto val = Typename();就像完成val一样。那么,究竟何时应该调用Typename val(); &&构造函数?

最后,这是一个毫无意义的想法。