Информация об изменениях

Сообщение Re[7]: Почему нельзя писать void ctor(); от 25.04.2017 13:16

Изменено 25.04.2017 13:19 CRT

Re[7]: Почему нельзя писать void ctor();
Здравствуйте, rg45, Вы писали:

R>Здравствуйте, Максим Рогожин, Вы писали:


N>>>А почему этот синтаксис надо запрещать?

МР>>Потому, что конструктор это функция, которая не возвращает никаких значений. Вот, например
МР>>
МР>>A obj = A(1024);            // значит и так нельзя писать... Потому, что функция-конструктор,
МР>>                            // с точки зрения синтаксиса, похожа на функцию createObject(int) тем, 
МР>>                            // что у нее нет возвращаемого значения.
МР>>


R>Ты сам себя загоняешь в заблуждение, пытаясь рассматривать это выражение как значение, возвращаемое функцией. В то время как никто никого здесь не возвращает — это прямое конструировние объекта имя типа которого задается конструктором.


Это выглядит как значение возвращенное функцией. А затем присвоенное с помощью оператора присвоения.
По идее, такое конструирование — это избыточность в языке, достаточно было оставить
A obj(1024);


И эта избыточность запутывает, особенно когда это касается классов, а не простых типов.
Re[7]: Почему нельзя писать void ctor();
Здравствуйте, rg45, Вы писали:

R>Здравствуйте, Максим Рогожин, Вы писали:


N>>>А почему этот синтаксис надо запрещать?

МР>>Потому, что конструктор это функция, которая не возвращает никаких значений. Вот, например
МР>>
МР>>A obj = A(1024);            // значит и так нельзя писать... Потому, что функция-конструктор,
МР>>                            // с точки зрения синтаксиса, похожа на функцию createObject(int) тем, 
МР>>                            // что у нее нет возвращаемого значения.
МР>>


R>Ты сам себя загоняешь в заблуждение, пытаясь рассматривать это выражение как значение, возвращаемое функцией. В то время как никто никого здесь не возвращает — это прямое конструировние объекта имя типа которого задается конструктором.


Это выглядит как значение возвращенное функцией. А затем присвоенное с помощью оператора присвоения.
По идее, такое конструирование — это избыточность в языке, достаточно было оставить
A obj(1024);


И эта избыточность запутывает