Re[10]: Инициализация в условии
От: SergeCpp Россия http://zoozahita.ru
Дата: 11.08.05 02:45
Оценка:
Здравствуйте, Centaur!

А как насчёт случая, когда для предотвращения копирования
конструктор копирования — запрещён
(объявлением его как private и отсутствием определения) ?
http://zoozahita.ruБездомные животные Екатеринбурга ищут хозяев
Re[11]: Инициализация в условии
От: Centaur Россия  
Дата: 11.08.05 03:14
Оценка:
Здравствуйте, SergeCpp, Вы писали:

SC>Здравствуйте, Centaur!


SC>А как насчёт случая, когда для предотвращения копирования

SC>конструктор копирования — запрещён
SC>(объявлением его как private и отсутствием определения) ?

Обходиться явным введением области видимости. Или писать предложение в Комитет.
// …some code…
{
  Class object(many, constructor, parameters);
  if (object)
  {
    do_the(right.thing);
  }
} // here it dies
// …more code…
Re[12]: Инициализация в условии
От: SergeCpp Россия http://zoozahita.ru
Дата: 11.08.05 03:33
Оценка:
Здравствуйте, Centaur, Вы писали:

C>...писать ... в Комитет... // ГБ... ?
http://zoozahita.ruБездомные животные Екатеринбурга ищут хозяев
Re: Инициализация в условии
От: SergeCpp Россия http://zoozahita.ru
Дата: 11.08.05 13:23
Оценка:
Здравствуйте!

Переписка с Bjarne Stroustrup
-----------------------------

Смирнов Сергей wrote:

>Good day, Dr. Stroustrup!

>
>----- Original Message -----
>From: "Bjarne Stroustrup" <bs@cs.tamu.edu>
>To: "Смирнов Сергей" <serge@gus.elcom.ru>
>Sent: Wednesday, August 10, 2005 9:20 PM
>Subject: Re: Simple question — Constructing in condition
>
>
>Смирнов Сергей wrote:
>
>
>
>>Good day, Dr. Stroustrup!
>>
>>It is "ok" to use code like following ?
>>
>>if( int ok( GetStatus() ) ) // "int" used as example only (i use object of
>>some class with "operator bool()" there)
>>
>>
>>
>>
>You need to use the = initialization syntax:
>
>if (int ok = GetStatus())
>
>==========================================
>What if = initialization constructor
>(to prevent from copy semantics -
>i read in standard that in case of "=" temporary
>could — though it may be optimized away — be created)
>made private and without definition ?
>
>Will be "if( SomeClass ok( GetStatus() ) )" valid anyway ?
>
>
No. I don't recall the reason for requiring the = syntax, but the
requirement is there. Yes, it means that there are a few things you
can't do, but I have not found that a serious problem.

>// SomeClass::operator bool() is properly defined there

>==========================================
>
>Sincerely yours, Sergey Smirnoff
>
>serge@gus.elcom.ru
>
>P.S. THANK YOU FOR THE BEST LANGUAGE
>
>P.P.S. Can you allow me to place your answers
>together with my questions to "Constructing in condition" topic
>on Russian Software Developer Network Forum ?
>
>Forum URL — http://rsdn.ru/Forum
>
>
>
>
sure.
http://zoozahita.ruБездомные животные Екатеринбурга ищут хозяев
Re[2]: Инициализация в условии
От: jazzer Россия Skype: enerjazzer
Дата: 11.08.05 13:48
Оценка: :)
Здравствуйте, SergeCpp, Вы писали:

SC>Здравствуйте!


SC>Переписка с Bjarne Stroustrup

SC>-----------------------------

SC>Смирнов Сергей wrote:


>>Good day, Dr. Stroustrup!


Он уже Prof. Stroustrup :)
jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
Re[2]: Инициализация в условии
От: DDragon Россия  
Дата: 12.08.05 03:13
Оценка:
И все таки, с точки зрения стандарта:

int a=1;        // конструктор
int b(1);       // конструктор

int c=a;        // конструктор копирования
int d(a);       // конструктор копирования

int f(int);     // объявление функции
int g(int a);   // объявление функции
int h(int a=1); // объявление функции со значением по умолчанию

int j((int)1);  // конструктор
int i(int(1));  // конструктор

int i(int a(1));// конструктор или объявление функции ?
Re[3]: Инициализация в условии
От: Павел Кузнецов  
Дата: 12.08.05 03:21
Оценка:
DDragon,

> И все таки, с точки зрения стандарта:

>
> int a=1;        // конструктор
> int b(1);       // конструктор
>
> int c=a;        // конструктор копирования
> int d(a);       // конструктор копирования
>

У int нет конструкторов. Это все примеры инициализации, но конструкторы здесь ни при чем.

>
> int f(int);     // объявление функции
> int g(int a);   // объявление функции
> int h(int a=1); // объявление функции со значением по умолчанию
>

Да.

>
> int j((int)1);  // конструктор
> int i(int(1));  // конструктор
>

Инициализация.

>
> int i(int a(1));// конструктор или объявление функции ?
>

Ни то, ни другое: синтаксическая ошибка.
Posted via RSDN NNTP Server 2.0 beta
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[3]: Инициализация в условии
От: SergeCpp Россия http://zoozahita.ru
Дата: 12.08.05 03:22
Оценка:
Здравствуйте, DDragon, Вы писали:

DD>И все таки, с точки зрения стандарта:


DD>

DD>int c=a;        // конструктор копирования
DD>int d(a);       // конструктор копирования <<< не уверен...

DD>
http://zoozahita.ruБездомные животные Екатеринбурга ищут хозяев
Re[4]: Инициализация в условии
От: Павел Кузнецов  
Дата: 12.08.05 04:17
Оценка:
SergeCpp,

> DD>
> DD>int c=a;        // конструктор копирования
> DD>int d(a);       // конструктор копирования <<< не уверен...
> DD>


Это могло бы быть объявлением функции, только если бы a было бы именем типа. В данном случае это инициализация.
Posted via RSDN NNTP Server 2.0 beta
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.