C++: не ини­циа­ли­зи­руй­те объ­ек­ты сим­во­лом “=” ›››

Всё ска­зан­ное здесь не от­но­сит­ся к Visual Studio. В этой си­сте­ме, во­пре­ки стан­дар­там, ини­циа­ли­за­ция ра­вен­ством эк­ви­ва­лент­на ини­циа­ли­за­ции скоб­ка­ми (кро­ме слу­чая explicit-кон­ст­рук­то­ров).

Ча­сто мож­но встре­тить код, в ко­то­ром кон­струи­руе­мый объ­ект ини­циа­ли­зи­ру­ет­ся сим­во­лом «=»:

MyClass x = 10;

Та­кая за­пись на­зы­ва­ет­ся ини­циа­ли­за­ци­ей ко­пии (copy-initialization).

На сай­те govnokod.ru к этой ста­тье от­нес­лись до­ста­точ­но не­га­тив­но (ци­ти­рую: «ав­тор еба­нул­ся»). В оправ­да­ние ска­жу, что с тех пор ста­тья бы­ла силь­но до­ра­бо­та­на.

При­выч­ка ис­поль­зо­вать ини­циа­ли­за­цию ко­пии по­шла, ви­ди­мо, из «сиш­ных» вре­мён, ко­гда клас­сов и кон­ст­рук­то­ров не бы­ло, а ука­зан­ная за­пись бы­ла един­ствен­ным спо­со­бом ини­циа­ли­за­ции. Вме­сто это­го сле­ду­ет, где толь­ко мож­но, ис­поль­зо­вать ва­ри­ант со скоб­ка­ми:

MyClass x(10);

Эта за­пись на­зы­ва­ет­ся пря­мой ини­циа­ли­за­ци­ей (direct-initialization).

Да­вай­те раз­бе­рём­ся со все­ми «за» и «про­тив». Чи­тать даль­ше ›››

Кон­т­роль диа­па­зо­на це­ло­го чис­ла (С++) ›››

Ча­сто в за­да­чах об­ра­бот­ки изоб­ра­же­ний тре­бу­ет­ся опре­де­лить, не вы­хо­дит ли це­лое чис­ло за пре­де­лы не­ко­то­ро­го диа­па­зо­на; при­чём ле­вой гра­ни­цей диа­па­зо­на яв­ля­ет­ся чис­ло 0. На­при­мер, вы хо­ти­те про­ве­рить, по­па­да­ет ли пик­сель с це­ло­чис­лен­ны­ми ко­ор­ди­на­та­ми int x, int y в изоб­ра­же­ние раз­ме­ра­ми sX × sY.

Обыч­но для это­го ис­поль­зу­ет­ся усло­вие ви­да:

if(x>=0 && x<sx && y>=0 && y<sy ) какое_либо_действие();

Вез­де да­лее для со­кра­ще­ния за­пи­си бу­дем про­ве­рять лишь од­ну ко­ор­ди­на­ту:

if(x>=0 && x<sx ) какое_либо_действие();

В при­ве­дён­ном ко­де для пик­се­лей, по­па­даю­щих в изоб­ра­же­ние (та­ких у вас на­вер­ня­ка бу­дет боль­шин­ство) вы­пол­ня­ют­ся обе про­вер­ки, реа­ли­зуе­мые при по­мо­щи услов­ных пе­ре­хо­дов. Услов­ный пе­ре­ход яв­ля­ет­ся тя­жё­лой опе­ра­ци­ей для со­вре­мен­но­го про­цес­со­ра, так как он (в слу­чае не­удач­но­го пред­ска­за­ния пе­ре­хо­да) мо­жет при­ве­сти к сбро­су кон­вейе­ра, и по­те­ре де­сят­ков так­тов.

Од­на­ко, изу­чая ис­ход­ный код биб­лио­те­ки OpenCV, я об­на­ру­жил бо­лее эф­фек­тив­ное ре­ше­ние дан­ной за­да­чи Чи­тать даль­ше ›››

Power Point 2007 не по­ка­зы­ва­ет .avi-ви­део

Ес­ли ваш Power Point 2007 вме­сто .avi-ро­ли­ков по­ка­зы­ва­ет чёр­ный пря­мо­уголь­ник — не от­чаи­вай­тесь. По­про­буй­те сме­нить рас­ши­ре­ние ва­ше­го фай­ла с .avi на .wmv (про­сто пе­ре­име­нуй­те файл), и за­но­во вставь­те ви­део­ро­лик (с но­вым рас­ши­ре­ни­ем) в пре­зен­та­цию. Долж­но по­мочь.

Бес­плат­ное ПО Microsoft для сту­ден­тов и ас­пи­ран­тов

Ес­ли вы сту­дент или ас­пи­рант оч­ной фор­мы обу­че­ния, то мо­же­те бес­плат­но ска­чать и уста­но­вить сле­дую­щее про­грамм­ное обес­пе­че­ние от Microsoft:

  1. Visual Studio 2005/2008 Professional Edition
  2. Windows Server 2008 Standard
  3. SQL Server 2008 Developer
  4. Expression Studio 2
  5. Game Studio 2.0

Всё, что вам нуж­но — это за­ре­ги­стри­ро­вать­ся на сай­те DreamSpark.ru, предо­ста­вив скан сво­е­го сту­ден­че­ско­го би­ле­та или ас­пи­рант­ско­го удо­сто­ве­ре­ния.

По­сле то­го, как ва­ши дан­ные бу­дут про­ана­ли­зи­ро­ва­ны, вам при­дёт код ак­ти­ва­ции, ко­то­рый мо­жет быть ис­поль­зо­ван сов­мест­но с Live ID для ска­чи­ва­ния про­грамм­ных про­дук­тов с сай­та DreamSpark.com.

Я про­ве­рил: си­сте­ма ра­бо­та­ет! По­дроб­но­сти на сай­те DreamSpark.ru.

P.S. На­по­ми­наю, что Visual Studio 2005/2008 Express Edition бес­пла­тен для всех!