Почему деструктор базового класса вызван из noexcept constructor [duplicate]

<?php
      $username = $_POST['username'];
       $password = $_POST['password'];

     $result = mysql_query("SELECT * FROM Users WHERE UserName LIKE '".mysql_real_escape_string($username)."'")or die(mysql_error());
while($row=mysql_fetch_array($result))
  {
 echo $row['FirstName'];
 }
 ?>
6
задан Avi Kivity 3 November 2015 в 12:34
поделиться

2 ответа

[class.base.init] / 12 :

В конструкторе без делегирования деструктор для каждого прямого или виртуального базового класса и для каждого не- статический член данных типа класса потенциально вызывается (12.4). [ Примечание : Это условие гарантирует, что деструкторы могут быть вызваны для полностью построенных под-объектов в случае исключения исключения (15.2). end note ]

[class.dtor] / 11 :

Программа - это плохо сформированный, если деструктор, который потенциально вызывается, удаляется или недоступен из контекста вызова.

Исключение не делается для конструктора, который не выбрасывает. См. Также CWG 1915 .

3
ответ дан T.C. 3 September 2018 в 09:27
поделиться

Когда ваш объект user выходит из области видимости, он разрушается. Его члены уничтожаются, включая член indestructible, и это невозможно, поскольку его деструктор удален.

7
ответ дан JohnB 3 September 2018 в 09:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: