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

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

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

MyClass x = 10;

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

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

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

MyClass x(10);

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

Да­вай­те раз­бе­рём­ся со все­ми «за» и «про­тив».

1. Ини­циа­ли­за­ция ко­пии в об­щем слу­чае ме­нее эф­фек­тив­на, чем пря­мая ини­циа­ли­за­ция

User-defined conversion sequen­ces that can convert from the source type to the destination type or (when a conversion function is used) to a derived class are enumerated, and the best one is chosen through overload resolution. If the conversion cannot be done or is ambiguous, the initialization is ill-formed. The function selected is called with the initializer expression as its argument; if the fun­ction is a constructor, the call initiali­zes a temporary of the destination type. The result of the call (which is the temporary for the constructor case) is then used to direct-initialize, according to the rules above, the object that is the destination of the copy-initialization.

При­чи­на в том, что за­пись MyClass x = 10; эк­ви­ва­лент­на за­пи­си MyClass x( MyClass(10) ); (при этом внут­рен­нее вы­ра­же­ние MyClass(10) не обя­за­тель­но пред­став­ля­ет со­бой вы­зов кон­ст­рук­то­ра; это мо­жет быть так­же и поль­зо­ватель­ская функ­ция пре­об­ра­зо­ва­ния ти­па). Спра­ва при­ве­де­на вы­держ­ка из стан­дар­та C++ 2003, опи­сы­ваю­щая по­ве­де­ние ком­пи­ля­то­ра в этом слу­чае.

Дру­ги­ми сло­ва­ми, ис­поль­зуя знак ра­вен­ства вы вы­би­ра­е­те имен­но кон­ст­рук­тор ко­пии, а для не­го ком­пи­ля­тор уже пы­та­ет­ся по­до­брать под­хо­дя­щее пре­об­ра­зо­ва­ние ти­па. По­это­му та­кая ини­циа­ли­за­ция мо­жет при­ве­сти к со­зда­нию про­ме­жу­точ­ной ко­пии объ­ек­та да­же при на­ли­чии под­хо­дя­ще­го кон­ст­рук­то­ра.

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

Рас­смот­рим при­мер. До­пу­стим, име­ет­ся класс, ко­то­рый мо­жет быть ини­циа­ли­зи­ро­ван как объ­ек­том это­го же клас­са, так и це­лым чис­лом:

#include <iostream>

class MyInt
{
private:
    int x;
public:
    MyInt(int const y): x( y )
    { std::cout << "Constructor 1 called." << std::endl; }
    MyInt(MyInt const &y): x( y.x )
    { std::cout << "Constructor 2 called." << std::endl; }
};

int main(void)
{
    MyInt i = 1;

    return 0;
}

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

Constructor 1 called.
Constructor 2 called.

От­ра­бо­та­ли оба кон­ст­рук­то­ра. Пер­вый — для пре­об­ра­зо­ва­ния ти­па int в тип MyInt, вто­рой — для со­зда­ния нуж­но­го нам объ­ек­та MyInt i из пре­об­ра­зо­ван­но­го.

Не­мно­го из­ме­ним код (те­ло клас­са та­кое же, как в преды­ду­щем при­ме­ре):

int main(void)
{
    MyInt i(1);

    return 0;
}

При за­пус­ке име­ем бо­лее ожи­дае­мый ре­зуль­тат:

Constructor 1 called.

Од­на­ко не всё так пло­хо. Стан­дарт C++ 2003 раз­ре­ша­ет ком­пи­ля­то­рам в не­ко­то­рых слу­ча­ях опус­кать вы­зов кон­ст­рук­то­ра ко­пии:

  • In a return statement in a function with a class return type, when the expression is the name of a non-volatile automatic object with the same cv-unqualified type as the function return type, the copy operation can be omitted by constructing the automatic object directly into the function’s return value.

  • When a temporary class object that has not been bound to a reference would be copied to a class object with the same cv-unqualified type, the copy operation can be omitted by constructing the temporary object directly into the target of the omitted copy.

Вто­рой пункт — как раз наш слу­чай. На­при­мер, в ком­пи­ля­то­ре GCC ин­тел­лект по ис­клю­че­нию вы­зо­вов лиш­них кон­ст­рук­то­ров ак­ти­ви­ру­ет­ся клю­чём -felide-constructors, а дезак­ти­ви­ру­ет­ся клю­чём -fno-elide-constructors.

Но да­же опу­щен­ный вы­зов кон­ст­рук­то­ра ко­пии не поз­во­лит нам от­ком­пи­ли­ро­вать про­грам­му, ес­ли кон­ст­рук­тор ко­пии скрыт (private):

#include <iostream>

class MyInt
{
private:
    int x;
    MyInt(MyInt const &y): x( y.x )
    { std::cout << "Constructor 2 called." << std::endl; }
public:
    MyInt(int const y): x( y )
    { std::cout << "Constructor 1 called." << std::endl; }
};

int main(void)
{
    MyInt i = 1; //Ошибка: конструктор копии скрыт

    return 0;
}

На govnokod.ru под­ска­зы­ва­ют, что это по­ве­де­ние ком­пи­ля­то­ра Visual Studio ис­прав­ля­ет­ся клю­чом /Za (Disable Language Extensions).

Код вы­ше — как раз тот слу­чай, ко­гда про­яв­ля­ет­ся без­раз­ли­чие ком­пи­ля­то­ра Visual Studio к спо­со­бу ини­циа­ли­за­ции; в Сту­дии при­мер от­ком­пи­ли­ру­ет­ся и бу­дет ра­бо­тать, че­го по стан­дар­ту не долж­но быть.

2. Ини­циа­ли­за­цию ко­пии лег­ко спу­тать с опе­ра­ци­ей при­сваи­ва­ния

Пом­ни­те, что чи­таю­щие ваш код мо­гут быть не очень хо­ро­шо зна­ко­мы с C++ и с тру­дом от­ли­чать кон­ст­рук­тор от при­сваи­ва­ния.

Рас­смот­рим при­мер:

std::string      s = "Anton";
int              n = (int) 11.23;
std::vector<int> v = (std::vector<int>) 11;

Для мно­гих лю­дей пер­вая строч­ка при­ве­дён­но­го ко­да зву­чит как «со­здать стро­ку s и при­сво­ить ей зна­че­ние "Anton"». Ошиб­кой та­ко­го объ­яс­не­ния яв­ля­ет­ся пред­по­ло­же­ние о су­ще­ство­ва­нии скон­струи­ро­ван­ной стро­ки на мо­мент за­пол­не­ния её дан­ны­ми. Эта ошиб­ка ста­но­вит­ся фа­таль­ной при по­пыт­ке ана­ло­гич­но по­нять тре­тью строч­ку: по­лу­ча­ет­ся, что мы со­зда­ём мас­сив це­лых чи­сел, а за­тем при­сваи­ва­ем ему чис­ло 11 (на са­мом же де­ле тре­тья строч­ка со­зда­ёт мас­сив из 11-ти ну­лей).

Тут есть ещё од­но зло — ис­поль­зо­ва­ние име­ни ти­па дан­ных в скоб­ках для пре­об­ра­зо­ва­ния ти­па (то­же на­сле­дие сиш­ных вре­мён). Я имею в ви­ду за­пи­си (std::vector<int>) и (int). Об­суж­де­ние этой про­бле­мы, од­на­ко, тре­бу­ет от­дель­ной ста­тьи.

По­это­му не услож­няй­те чте­ние и по­ни­ма­ние ва­шей про­грам­мы — сде­лай­те ис­поль­зо­ва­ние кон­ст­рук­то­ров бо­лее яв­ным при по­мо­щи круг­лых ско­бок:

std::string      s("Anton");
int              x((int)11.23);
std::vector<int> v(11);

Рас­смот­рим ещё при­мер, свя­зан­ный с по­ис­ком ошиб­ки в ко­де. Ко­гда мы про­смат­ри­ва­ем текст про­грам­мы, то за­ча­стую ана­ли­зи­ру­ем её на уров­не «изоб­ра­же­ния» (то, как она вы­гля­дит), а не на уров­не тек­ста. При этом нам бу­дет тя­же­ло най­ти ошиб­ку в сле­дую­щей про­грам­ме:

#include <iostream>

struct MyInt
{
    int x;
    MyInt &operator=(int const y) { x = y; return *this; }    
    MyInt(int const y): x(x) { ; }
    MyInt(MyInt const &y): x(y.x) { ; }
};

int main(void)
{
    MyInt i = 1; //Операция присваивания?

    std::cout << i.x << std::endl; //Выведет 0. Почему?

    i = 1;       //Операция присваивания!

    std::cout << i.x << std::endl; //Выведет 1
    return 0;
}

Про­бле­ма в том, что при пр­осмот­ре те­ла клас­са мы в первую оче­редь об­ра­ща­ем вни­ма­ние на опе­ра­цию при­сваи­ва­ния, так как она по­хо­жа на строч­ку MyInt i = 1;, ко­то­рая по­че­му-то не­вер­но ра­бо­та­ет.

3. Знак ра­вен­ства не вез­де мож­но ис­поль­зо­вать для ини­циа­ли­за­ции

Один из слу­ча­ев мы с ва­ми толь­ко что ви­де­ли: это спи­сок ини­циа­ли­за­то­ров в кон­ст­рук­то­рах клас­са. Ис­поль­зо­вать ра­вен­ство там нель­зя:

MyInt(MyInt const &y): x = y.x { ; } //Так нельзя
MyInt(MyInt const &y): x(y.x) { ; } //Так можно

Вто­рой слу­чай — ис­поль­зо­ва­ние бо­лее од­но­го ар­гу­мен­та для ини­циа­ли­за­ции. Ра­вен­ство поз­во­ля­ет ис­поль­зо­вать ров­но один ар­гу­мент. Пред­ста­вим, что у вас есть класс Fraction, со­зда­вае­мый из чис­ли­те­ля и зна­ме­на­те­ля ти­па int, то­гда:

Fraction f = 2, 3; //Так нельзя
Fraction f(2, 3); //Так можно

Ес­ли скоб­ка­ми ини­циа­ли­зи­ро­вать мож­но все­гда, а ра­вен­ством — лишь ино­гда, то по­че­му бы не ис­поль­зо­вать скоб­ки вез­де?

За­клю­че­ние

На­де­юсь, мне уда­лось пе­ре­убе­дить про­грам­ми­стов, пе­ре­шед­ших на C++ с язы­ка C в том, что ини­циа­ли­за­цию ра­вен­ством нуж­но за­быть, как страш­ный сон (вы ведь уже за­бы­ли про printf() для вы­во­да в кон­соль?)

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

#pragma omp parallel for
for(int i(0); i < N; ++i) //Так нельзя, несмотря на то, что выглядит красиво
  какая_нибудь_функция(i);

#pragma omp parallel for
for(int i = 0; i < N; ++i) //Так можно
  какая_нибудь_функция(i);

for(int i(0); i < N; ++i) //Так можно, так как цикл не распараллеливается
  какая_нибудь_функция(i);

На­де­юсь, этот де­фект вско­ре по­пра­вят.

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

gorban@nix:/tmp$ cat test.cpp 
#include <iostream>

class MyInt {
private:
    int x;
public:
    MyInt(int const y): x( y )
    { std::cout < < "Constructor 1 called." << std::endl; }
    MyInt(MyInt const &y): x( y.x )
    { std::cout << "Constructor 2 called." << std::endl; }
};

int main(void)
{
    MyInt i = 1;

    return 0;
}

gorban@nix:/tmp$ g++ test.cpp 
gorban@nix:/tmp$ ./a.out 
Constructor 1 called.
Спа­си­бо, разо­брал­ся. Ис­ти­на по­сре­ди­не. Че­рез па­ру дней об­нов­лю эту ста­тей­ку.
Зд­рас­т­вуй­те) Спа­си­бо боль­шое за ста­тью! Я на­чи­наю­щий в С++, и у ме­ня та­кой (воз­мож­но ту­по­ва­тый) во­прос:
а за­чем про­стые ти­пы ини­циа­ли­зи­ро­вать скоб­ка­ми (нар­пи­мер, int i(10);)? Это же про­стые ти­пы, а не клас­сы. Раз­ве у них есть кон­ст­рук­то­ры?
Для про­стых ти­пов не важ­но, как ини­циа­ли­зи­ро­вать.
buy clomid
where can i get clomid online
sildalis without a prescription
nexium online
wh0cd735078 CIALIS ONLINE
wh0cd548294 misoprostol
wh0cd49942 get the facts
wh0cd90438 Retin-A
wh0cd317718 OVER THE COUNTER VIAGRA
wh0cd49942 viagra
wh0cd90438 buy tadalafil online
wh0cd49942 tadalafil pharmacy
wh0cd90438 cialis online
wh0cd90438 Tadalafil Tablets
wh0cd90438 tadalafil
wh0cd90438 Tadalafil Mail Order
Thanks for finally talking about > C++: не ини­циа­ли­зи­руй­те объ­ек­ты сим­во­лом “=” | Image Processing
< Liked it!
wh0cd331985 neurontin
wh0cd283634 prednisone
After checking out a few of the articles on your website, I seriously appreciate your technique of writing a
blog. I saved it to my bookmark webpage list and will be checking back soon.
Please visit my website as well and tell me what you think.
wh0cd302022 viagra online
Awesome! Its truly amazing post, I have got much clear idea regarding from this
post.
hi!,I really like your writing very a lot! proportion we communicate more about your article on AOL? I require an expert in this area to solve my problem. May be that’s
you! Taking a look ahead to peer you.
Wonderful article! This is the type of info that
should be shared across the web. Shame on the seek engines for
not positioning this submit higher! Come on over and consult with my website . Thanks =)
I love what you guys are up too. Such clever work
and reporting! Keep up the fantastic works guys I’ve incorporated you guys to our blogroll.
Yes! Finally something about minecraft.
Appreciation to my father who shared with me concerning this web site, this
web site is truly amazing.
Thanks for every other fantastic post. The place else could anybody get that type of information in such a
perfect method of writing? I’ve a presentation subsequent week, and I’m
at the search for such info.
I am really enjoying the theme/design of your weblog. Do you ever run into any web browser compatibility problems?
A handful of my blog readers have complained about my site not working correctly in Explorer but looks great in Opera.
Do you have any ideas to help fix this problem?
Can you tell us more about this? I’d want to
find out some additional information.
I’ve been exploring for a bit for any high quality
articles or blog posts in this sort of house . Exploring
in Yahoo I ultimately stumbled upon this website. Studying this information So i am satisfied to exhibit that I’ve
an incredibly good uncanny feeling I discovered just what I needed. I such a lot no doubt will make certain to do not forget this site and give it a glance regularly.
I all the time used to read piece of writing in news papers but now
as I am a user of web thus from now I am using net for content, thanks to web.
You’ve made some decent points there. I checked on the internet to find out more about the
issue and found most individuals will go along with your views on this website.
Just want to say your article is as surprising. The clearness to your put
up is just excellent and that i can think you’re an expert on this subject.
Fine along with your permission let me to grasp your RSS feed to stay updated with drawing close post.
Thanks a million and please carry on the rewarding work.
If some one needs expert view concerning blogging and site-building then i recommend him/her to
pay a quick visit this website, Keep up the pleasant work.
Spot on with this write-up, I absolutely believe this web site needs a lot more attention. I’ll probably be returning to read more, thanks for the information!
Your way of explaining everything in this post is in fact
fastidious, every one be capable of effortlessly know it, Thanks a lot.
Thank you a bunch for sharing this with all people you really recognize what you are speaking approximately!
Bookmarked. Please also seek advice from my web site
=). We will have a link trade agreement between us
Hello! Someone in my Myspace group shared this site with us
so I came to check it out. I’m definitely enjoying the information. I’m bookmarking and will be tweeting this to my followers! Exceptional blog and brilliant design and style.
I’m not that much of a internet reader to be honest but your blogs really
nice, keep it up! I’ll go ahead and bookmark your site to come back
later. Cheers
Whoa! This blog looks exactly like my old one! It’s on a entirely different subject but it has pretty much the same page layout
and design. Outstanding choice of colors!
I got this site from my buddy who informed me regarding this web site and now this time I am visiting this web page and reading very informative articles
or reviews at this time.
Whats up very nice web site!! Man .. Excellent .. Amazing ..
I’ll bookmark your website and take the feeds additionally?
I am happy to seek out numerous useful info right
here in the put up, we’d like work out more techniques on this regard, thank you for sharing. . . . . .
Hello would you mind letting me know which hosting company you’re working with?
I’ve loaded your blog in 3 different web browsers and I must say this blog loads a lot faster then most.
Can you recommend a good internet hosting provider
at a fair price? Thanks, I appreciate it!
What’s up, its nice piece of writing about media print, we all know media is a fantastic
source of facts.
Thank you for some other informative website. Where else may I get that kind of info written in such an ideal means?
I’ve a challenge that I’m simply now running on, and I’ve
been on the look out for such info.
I was wondering if you ever considered changing the layout of your
website? Its very well written; I love what youve got to say.
But maybe you could a little more in the way of content so people could connect with it better. Youve got an awful lot of text for only having 1 or 2 images.
Maybe you could space it out better?
you are really a excellent webmaster. The site loading speed is
incredible. It kind of feels that you’re doing
any unique trick. Moreover, The contents are masterpiece.
you’ve done a wonderful activity on this subject!
Your way of explaining the whole thing in this article is actually good,
all be capable of without difficulty know it, Thanks a lot.
Woah! I’m really enjoying the template/theme of this blog.
It’s simple, yet effective. A lot of times it’s challenging to get
that «perfect balance» between usability and visual appearance.
I must say you have done a great job with this.
Additionally, the blog loads super quick for me on Opera.
Exceptional Blog!
I’m not certain the place you’re getting your info, however great topic.
I must spend a while studying more or figuring out more. Thanks for excellent information I was in search of this information for my mission. Feel free to surf to my website :: madden mobile coins buy cheap
Hey There. I found your blog using msn. This is a very well written article.
I’ll make sure to bookmark it and return to read more of your useful
info. Thanks for the post. I will certainly comeback. Here is my web blog; csgo skin betting tips; http://www.seat-sudautoemotion.fr,
I used to be able to find good info from your blog posts. Look into my web site :: mink lashes for sale
At this time I am going to do my breakfast, once having my breakfast coming
yet again to read additional news.
Nice post. I was checking constantly this blog
and I’m impressed! Very useful information specially the last part I care for such information a lot.
I was looking for this certain info for
a long time. Thank you and good luck.
When some one searches for his required thing, so he/she desires to be available that in detail, so that thing
is maintained over here. Feel free to visit my webpage: mink lashes bad kitty
Ahaa, its pleasant conversation regarding this article here at this weblog, I have read all that,
so at this time me also commenting at this place. my website csgo skins free [insightinsuranceconsulting.com]
Thank you for the good writeup. It actually was once a leisure account it.
Look advanced to far introduced agreeable from you! By
the way, how can we keep in touch? My blog post: madden 17 coins reddit (http://s-mkorea.com)
Thanks for sharing your thoughts on cs go weapon skins for sale.
Regards Stop by my web page :: cs go skins price checker
I could not resist commenting. Exceptionally well written! Here is my web site mink strip lashes canada
I read this paragraph completely regarding the resemblance of newest and
earlier technologies, it’s remarkable article. Also visit my homepage … nba live coins free
I do accept as true with all the ideas you’ve introduced to
your post. They’re really convincing and can certainly work. Nonetheless, the posts are too brief for starters. May you please prolong them a bit from next time?
Thank you for the post. My page; csgo skins for sale steam
Thanks for every other informative blog.
Where else may I am getting that kind of information written in such an ideal method?
I’ve a venture that I’m just now operating on, and I have been at the glance out for
such info. My page … cs go awp skins for sale
I wanted to thank you for this excellent read!!
I certainly loved every little bit of it. I’ve got you book marked to look at new things you post… Feel free to visit my blog: silk lashes vs synthetic
Do you mind if I quote a few of your posts as long as I provide credit
and sources back to your blog? My blog is in the exact same
area of interest as yours and my visitors would truly
benefit from a lot of the information you present here.
Please let me know if this alright with you. Thanks! Check out my web-site :: fifa coins free ps4
Aw, this was an incredibly good post. Spending some
time and actual effort to produce a great article… but what can I say…
I put things off a lot and never manage to get nearly anything done. Feel free to surf to my site nba live coins generator
Thanks on your marvelous posting! I really enjoyed reading it, you may be a great author.
I will be sure to bookmark your blog and will eventually come back very soon. I
want to encourage continue your great work, have a nice morning! Check out my blog post; csgo skins free no survey
Hey there! This is kind of off topic but I need some help from
an established blog. Is it very difficult to set up your own blog?
I’m not very techincal but I can figure things out pretty fast.
I’m thinking about making my own but I’m not sure where to start.
Do you have any points or suggestions? Appreciate it Here is my web-site — madden mobile coins free
Post writing is also a fun, if you know after that you can write or else it is complicated to write. My web site: csgolounge betting skins (http://www.nanofrabs.eu)
Keep on working, great job! Also visit my blog: nba live coins and cash; Jess,
Asking questions are truly fastidious thing if you are not understanding anything
completely, but this piece of writing presents good
understanding even. Stop by my site — mink lash extensions london
Greetings from Carolina! I’m bored at work so I decided
to browse your website on my iphone during lunch break. I enjoy the info you present here and can’t wait to take a look when I get home.
I’m amazed at how quick your blog loaded on my mobile .. I’m not even using WIFI, just 3G .. Anyways, fantastic site! Here is my site … best gaming systems, Maryjo,
Hi there just wanted to give you a quick heads up. The words in your post seem to be running off the screen in Opera.
I’m not sure if this is a format issue or something to do with internet browser compatibility but I thought I’d post to let you
know. The design look great though! Hope you get the problem resolved soon. Thanks Feel free to visit my website :: nba live coins free
There’s certainly a great deal to learn about this subject.
I love all the points you’ve made. Look at my site … csgo skins free no survey
We’re a gaggle of volunteers and opening a new scheme in our community. Your site provided us with valuable info to work on. You’ve performed an impressive task and our whole group
will likely be thankful to you. my web blog … silk lash extensions wholesale (mobedco.com)
After I initially commented I seem to have clicked on the -Notify me when new comments are added- checkbox and now every time
a comment is added I get four emails with the same comment.
There has to be a way you are able to remove me from
that service? Appreciate it! Feel free to surf to my site … silk lash extensions
perth (Dotty)
Magnificent website. A lot of helpful information here.
I am sending it to several friends ans additionally sharing in delicious.
And certainly, thank you for your sweat! Here is my blog post — groupon mink lashes nyc — Alejandra,
Hello there! This blog post could not be written any better!
Looking through this post reminds me of my previous roommate!
He continually kept preaching about this. I most certainly will send this article to him.
Pretty sure he will have a great read. Thanks for sharing! My weblog … ncaa football scores (Christen)
Great article, exactly what I needed. Here is my page: cs go weapon skins steam (Marjorie)
When some one searches for his necessary thing, thus he/she wants to be
available that in detail, therefore that thing is maintained
over here.
I was recommended this website by my cousin. I’m not sure whether this post
is written by him as nobody else know such
detailed about my difficulty. You’re amazing!
Thanks! Feel free to visit my webpage — mink eyelash extensions strips (totalmaskin.202.no)
Thanks for your marvelous posting! I certainly enjoyed reading it,
you could be a great author. I will be sure to bookmark your
blog and will often come back in the foreseeable future.
I want to encourage you to definitely continue your great posts, have a nice afternoon! Feel free to surf to my website cs go skins price rising (Katherine)
I do not know whether it’s just me or if perhaps everyone else encountering
issues with your site. It appears like some of the written text in your content are
running off the screen. Can somebody else please comment and
let me know if this is happening to them as well? This may be a problem with
my internet browser because I’ve had this happen previously. Many thanks Stop by my website :: csgo skins free download, http://www.e-wef.org,
I have read so many articles regarding the blogger lovers but this article is
in fact a pleasant post, keep it up. Have a look at my website — mink lash extensions nyc
Oh my goodness! Impressive article dude! Many thanks,
However I am having problems with your RSS. I don’t understand why I can’t
join it. Is there anyone else getting the same RSS problems? Anybody who knows the answer will you kindly respond?
Thanx!! Also visit my weblog — csgo skins free spin (Rebekah)
hello there and thank you for your information – I
have definitely picked up anything new from right
here. I did however expertise some technical points using this website, as I experienced to reload the website lots of times previous to I could get it to load
properly. I had been wondering if your web hosting is OK?
Not that I’m complaining, but sluggish loading instances times will very
frequently affect your placement in google and could damage your high quality
score if advertising and marketing with Adwords. Anyway I’m adding this RSS to my email and
can look out for a lot more of your respective fascinating content.
Make sure you update this again soon. Stop by my webpage: csgo skins free hack (empresas-enventa.com)
My spouse and I stumbled over here by a different web address and
thought I should check things out. I like what I see so i am just
following you. Look forward to checking out your web
page again. Feel free to surf to my homepage … nba mobile
coins for free (Quyen)
Great post. Also visit my webpage — mink lashes starter kit — Cortez -
I know this site presents quality based articles and additional data, is there
any other website which provides such things in quality? My web blog; madden mobile coins buy (Mitch)
If some one wants expert view concerning blogging and site-building then i advise him/her
to pay a quick visit this website, Keep up the pleasant job. Stop by my web site; cs go skins for sale ebay (Bernardo)
When I originally commented I clicked the «Notify me when new comments are added» checkbox
and now each time a comment is added I get four e-mails with the same comment.
Is there any way you can remove people from that service?
Cheers! My site — cs go skins no steam (http://www.tybeeislandmaritimeacademy.com/)
Have you ever thought about creating an ebook or
guest authoring on other sites? I have a blog based upon on the same ideas you
discuss and would love to have you share some stories/information. I know my visitors would appreciate your work.
If you are even remotely interested, feel free to shoot me
an e mail. my blog post — nba live coins reddit
Wonderful website you have here but I was wanting to know if you knew
of any user discussion forums that cover the same topics talked about in this article?
I’d really like to be a part of group where I can get
advice from other experienced people that share the same interest.
If you have any recommendations, please let me know.
Many thanks! Here is my homepage; nba live coins reddit
In fact when someone doesn’t be aware of after that its up to other visitors
that they will help, so here it takes place. Here is my webpage: mink individual lashes kit (Lorenzo)
Have you ever thought about including a little bit more than just your articles? I mean, what you say is fundamental and all.
Nevertheless think of if you added some great visuals or video clips to give your posts more,
«pop»! Your content is excellent but with images and
clips, this website could certainly be one of the very best in its field.
Great blog! my web page :: fifa coins zone discount (Larhonda)
Howdy! I know this is kind of off topic but I was wondering
which blog platform are you using for this website? I’m getting
fed up of WordPress because I’ve had issues with hackers
and I’m looking at alternatives for another platform. I would be great if you could point
me in the direction of a good platform.
Heya great blog! Does running a blog such as this require a massive amount work?
I’ve absolutely no knowledge of programming however I had been hoping to start my own blog in the near future.
Anyhow, if you have any suggestions or tips for new blog owners please share. I understand this is off topic but I just had to ask. Thanks! My page — madden mobile coin quick sell
Hey there! This is my 1st comment here so I just wanted to give a quick shout out and say I genuinely enjoy reading your blog posts. Can you suggest any other blogs/websites/forums that deal
with the same topics? Thank you! my web site … cs go skins price rising
Hello mates, how is everything, and what you want to say on the topic of this post,
in my view its actually remarkable in favor of me. my page :: fifa coins buy code — Juana,
Hello to every , because I am actually keen of reading this web
site’s post to be updated on a regular basis. It contains pleasant
information. my blog post: silk lash extensions vs mink
Hello my family member! I want to say that this post
is amazing, great written and include almost all important infos. I’d like to peer extra posts like this . Here is my page: silk lashes review (Gail)
Hello there, You have done a great job. I will
definitely digg it and personally suggest to my friends.
I’m confident they will be benefited from this website. Also visit my website: pubg weapons [Gladys]
Heya! I just wanted to ask if you ever have any trouble with hackers? My last blog (wordpress) was hacked and I ended up losing a few months of hard work due
to no back up. Do you have any solutions to stop hackers? Here is my web blog; real mink lashes for sale
I have been surfing online more than three hours today, yet I never found any interesting article like
yours. It’s pretty worth enough for me. In my view, if all website owners
and bloggers made good content as you did, the internet will be much more
useful than ever before. Also visit my web blog :: nhl 17 coins (Dwight)
It’s a pity you don’t have a donate button! I’d certainly donate to this
excellent blog! I guess for now i’ll settle for book-marking and adding
your RSS feed to my Google account. I look forward to
brand new updates and will share this blog with my Facebook group.
Chat soon! Review my weblog … csgo skins price list (Jorge)
Wow that was strange. I just wrote an extremely long comment but after
I clicked submit my comment didn’t appear.
Grrrr… well I’m not writing all that over again. Regardless, just wanted
to say excellent blog! My blog post nba mobile coins reddit (Constance)
Hi to all, the contents present at this web page are actually remarkable
for people knowledge, well, keep up the nice work fellows. My blog post buy nhl 17 coins; Rosetta,
Remarkable! Its truly remarkable piece of writing, I have got much clear idea concerning from this paragraph. My site; buy csgo skins
Good day I am so happy I found your web site, I really found you
by accident, while I was browsing on Digg for something else, Anyhow I am here now and would just like to say many thanks for a
incredible post and a all round interesting blog (I
also love the theme/design), I don’t have time to look over it all at the
moment but I have bookmarked it and also added in your RSS feeds,
so when I have time I will be back to read much more, Please
do keep up the superb jo. my page … nba live coins reddit (David)
I have fun with, cause I found exactly what I used to be looking for.
You’ve ended my four day long hunt! God Bless you man. Have a great day. Bye My web-site madden mobile coin cheat no download (Merissa)
Hey there this is kind of of off topic but I was wanting to know if
blogs use WYSIWYG editors or if you have to manually code with HTML.
I’m starting a blog soon but have no coding knowledge so I wanted to get advice from someone with experience.
Any help would be enormously appreciated!
Post writing is also a excitement, if you be
acquainted with then you can write otherwise it
is difficult to write.
I truly love your website.. Pleasant colors & theme. Did you develop
this website yourself? Please reply back as I’m looking to
create my very own site and would like to find out where you got this
from or just what the theme is named. Thanks!
If you are going for best contents like I do, only go
to see this website everyday for the reason that it offers feature contents, thanks Feel free to surf to my blog cheap nba live coins
hi!,I really like your writing very much! share we keep in touch more approximately your post on AOL?
I require an expert in this space to unravel my problem.
Maybe that is you! Taking a look ahead to look you. my site: madden mobile coins (Mohamed)
Do you mind if I quote a few of your posts as long as I
provide credit and sources back to your weblog? My website is in the very same area of interest as yours
and my visitors would certainly benefit from a lot of the information you provide here.
Please let me know if this ok with you. Thanks a
lot! Here is my site :: buy csgo skins (Jaqueline)
I love it when individuals come together and share opinions.
Great blog, continue the good work! my website; mink eyelashes (Veda)
Thanks for sharing your info. I really appreciate your efforts and I am
waiting for your next write ups thank you once again. Check out my weblog — nhl 17 coins (psy.hnue.edu.vn)
Hi, i think that i saw you visited my website so i came to “return the favor”.I’m attempting to find things to enhance my web site!I
suppose its ok to use some of your ideas!! Here is my web site :: nba live coins (http://www.vector-marketing.com/)
Great post. I am dealing with a few of these
issues as well.. Here is my weblog — cheap h1z1 skins — Elbert,
I visited several sites except the audio feature for audio songs present at this website is
actually marvelous. Feel free to surf to my blog nba mobile coins (Shelli)
I’ve been browsing online more than 2 hours today, yet I never
found any interesting article like yours. It’s pretty worth enough for me.
In my opinion, if all web owners and bloggers made
good content as you did, the web will be a lot more useful than ever before. Here is my weblog; fut 18 coins (Stephan)
I know this web page provides quality dependent posts and extra data, is there any
other web page which provides such stuff in quality? Feel free to surf to my website — cheap pubg skins
fantastic publish, very informative. I ponder why the opposite specialists of
this sector do not understand this. You must continue your
writing. I am sure, you have a great readers’ base
already! My weblog cheap h1z1 items (Martin)
Hi! Do you use Twitter? I’d like to follow you if that would
be okay. I’m undoubtedly enjoying your blog and look
forward to new updates. Check out my homepage; fut 18 coins
Hi, Neat post. There is an issue with your website in web explorer, may test this?
IE still is the marketplace chief and a big element
of people will omit your excellent writing due to this problem. Here is my web page; buy madden mobile coins
I simply couldn’t depart your website prior to suggesting that I
actually enjoyed the standard info a person provide on your guests?
Is going to be back often in order to inspect new posts Look at my weblog … nba live coins
Pretty part of content. I simply stumbled upon your blog and in accession capital to claim that I acquire in fact enjoyed account your weblog posts. Any way I will be subscribing to your augment and even I
success you get right of entry to constantly fast. Also visit my web site; buy mink lashes (Janeen)
Great post. I will be dealing with a few of these issues as well.. Also visit my weblog — buy madden mobile coins (Hanna)
Very nice post. I just stumbled upon your blog and wanted to say that I’ve
truly enjoyed browsing your blog posts. After all I will be subscribing to your rss feed and I hope
you write again soon! my web blog; cheap nba mobile coins (Alberta)
Thanks a bunch for sharing this with all folks
you really know what you’re talking about! Bookmarked.
Please additionally seek advice from my website =). We may have a link trade arrangement between us Feel free to visit my homepage :: cs go skins no steam (Melanie)
Every weekend i used to visit this web site, as i wish for enjoyment, since this this site conations truly
pleasant funny stuff too.
Hi to all, the contents present at this web page are genuinely amazing for people experience, well, keep up the nice work fellows.
Hello there, You have done an excellent job. I will
definitely digg it and personally recommend to my
friends. I am sure they’ll be benefited from this website.
It’s perfect time to make some plans for
the future and it’s time to be happy. I’ve read this post and if I
could I wish to suggest you some interesting things or tips.
Maybe you can write next articles referring to this article.
I want to read even more things about it!
Hi there, I check your blog like every week. Your writing style is witty, keep doing what you’re doing!
If you are going for best contents like myself, only pay
a visit this website everyday for the reason that it provides quality contents, thanks
Thank you for the good writeup. It actually was once a entertainment account it. Glance complex to far delivered agreeable from you! By the way, how can we be in contact?
Pretty nice post. I simply stumbled upon your blog and wanted to say that I’ve truly enjoyed
browsing your weblog posts. In any case I’ll be subscribing in your feed and I hope you
write again very soon!
Howdy! This is my first comment here so I just wanted to give
a quick shout out and tell you I really enjoy reading your articles.
Can you recommend any other blogs/websites/forums that deal with the same
subjects? Many thanks!
It is not my first time to visit this web site, i am browsing this site dailly and get pleasant information from here daily.
Hi, i think that i saw you visited my web site so i came to “return the favor”.I’m trying to find things to enhance my website!I suppose its
ok to use a few of your ideas!!
I constantly spent my half an hour to read this web site’s articles or reviews
daily along with a mug of coffee.
Thanks very nice blog!
Thanks for a marvelous posting! I really enjoyed reading
it, you can be a great author. I will always bookmark
your blog and will eventually come back later in life.
I want to encourage yourself to continue your great job,
have a nice holiday weekend!
Have you ever considered about adding a little bit more than just your articles?
I mean, what you say is fundamental and everything. But just imagine if you
added some great photos or videos to give your posts more, «pop»!
Your content is excellent but with images and clips,
this website could certainly be one of the greatest in its niche.
Great blog!
Just want to say your article is as astounding. The clarity in your post is
just nice and i can assume you’re an expert on this subject.
Well with your permission let me to grab your feed to keep updated
with forthcoming post. Thanks a million and please continue the
enjoyable work.
Hurrah, that’s what I was searching for, what a information! present here at this
website, thanks admin of this web page.
We are a group of volunteers and opening a new scheme
in our community. Your site provided us with valuable info to work on.
You have done an impressive job and our entire community will be grateful to you.
You actually make it appear so easy along with your presentation but I find
this matter to be actually one thing that I think I would never understand.
It kind of feels too complicated and very large for me.
I am having a look ahead on your subsequent post, I’ll try to get the grasp
of it!
Excellent way of explaining, and fastidious piece of writing to take data concerning my presentation focus, which i am going to deliver in institution of higher education.
Nice post. I learn something totally new and challenging on blogs I stumbleupon everyday.
It’s always exciting to read through content from other writers and use something from other web
sites.
Just desire to say your article is as surprising. The clarity in your post
is just excellent and i can assume you’re an expert on this subject.
Well with your permission allow me to grab your
RSS feed to keep up to date with forthcoming post. Thanks a million and please continue the enjoyable work.
Great post however , I was wanting to know if
you could write a litte more on this subject?
I’d be very grateful if you could elaborate a
little bit further. Thanks!
Cool blog! Is your theme custom made or did you download it from somewhere?
A theme like yours with a few simple adjustements would really make my blog jump out.
Please let me know where you got your theme. Thanks a
lot
Tremendous issues here. I am very satisfied to look your article.
Thank you so much and I’m taking a look forward to touch you. Will you please drop me a mail?
Hi friends, pleasant piece of writing and pleasant
arguments commented at this place, I am actually enjoying
by these.
What’s up, yup this paragraph is actually
good and I have learned lot of things from it concerning blogging.
thanks.
Right away I am going to do my breakfast, when having
my breakfast coming over again to read more news.
Hi, its fastidious paragraph concerning media print, we all know media is a
fantastic source of information.
When someone writes an piece of writing he/she maintains the plan of a user in his/her mind that how
a user can be aware of it. Therefore that’s why this post is amazing.
Thanks!
It’s awesome to go to see this web page and reading the views of all friends regarding this piece of writing, while I am also zealous of getting know-how.
Hi! Do you know if they make any plugins to protect against hackers?
I’m kinda paranoid about losing everything I’ve worked hard on.
Any tips?
It is appropriate time to make some plans for the long run and
it is time to be happy. I have learn this submit and if
I could I wish to recommend you few attention-grabbing
issues or tips. Perhaps you could write next articles referring to this article. I wish to read more things about it!
Hello, i think that i saw you visited my weblog so i came to “return the favor”.I’m trying to find things
to improve my website!I suppose its ok to use a few of your ideas!!
Hi colleagues, how is everything, and what you wish for to say
concerning this post, in my view its really awesome in favor of me.
Thanks in support of sharing such a good idea, article is pleasant,
thats why i have read it entirely
Howdy! Quick question that’s completely off topic. Do you know how to make your site mobile friendly? My web site looks weird when browsing from my iphone. I’m trying to find
a theme or plugin that might be able to resolve this issue. If you have any suggestions, please share. Cheers!
Wow, this paragraph is good, my sister is analyzing such things, so I am going to convey her.
Hey! This is my first visit to your blog! We are a collection of volunteers and starting a new initiative in a community in the same niche.
Your blog provided us beneficial information to
work on. You have done a outstanding job!
I just like the valuable info you provide in your articles.
I will bookmark your weblog and test again right here regularly.
I am moderately sure I will be informed a lot
of new stuff proper here! Good luck for the next!
My brother recommended I might like this website. He was entirely right. This post truly made my day.
You can not imagine simply how much time I had spent for this information! Thanks!
For hottest news you have to visit world wide web
and on web I found this website as a most excellent web site for latest updates.
Hello!
Its such as you read my mind! You appear to understand
a lot approximately this, like you wrote the ebook in it or something.
I feel that you simply could do with some % to drive the message house a bit, but instead of that, that is great
blog. An excellent read. I’ll definitely be back.
What a information of un-ambiguity and preserveness of valuable familiarity about unpredicted emotions.
Hi, Neat post. There is a problem together with your
site in internet explorer, might test this? IE still is the marketplace chief and a big element
of other people will omit your great writing due to this problem.
Hi, this weekend is nice for me, because this occasion i am reading this great educational piece of writing here at my residence.
Good information. Lucky me I found your website by chance (stumbleupon). I have saved as a favorite for later!
I used to be suggested this blog through my cousin. I am no longer certain whether this
submit is written by means of him as no
one else recognize such specified approximately my problem.
You are amazing! Thank you!
Hey there terrific website! Does running a blog like this require a massive amount work?
I’ve no knowledge of computer programming however I was hoping
to start my own blog in the near future. Anyways, if you
have any suggestions or tips for new blog
owners please share. I know this is off topic but I simply needed to ask.
Kudos!
Hi to every one, the contents existing at this web page are really amazing for
people knowledge, well, keep up the nice work fellows.
I every time used to study post in news papers but now as I am a user of web therefore from now I am
using net for content, thanks to web.
Thank you for the good writeup. It in fact was a amusement account it.
Look advanced to far added agreeable from you! However, how can we communicate?
You really make it seem so easy with your presentation but I find this topic to be actually something that I think I would never understand.
It seems too complex and extremely broad for
me. I’m looking forward for your next post, I will try to get the hang of it!
I am not sure where you’re getting your information, but good topic.
I needs to spend some time learning much more or understanding more.
Thanks for wonderful information I was looking for this info
for my mission.
Howdy! I simply would like to give you a big thumbs up
for the great info you have right here on this post.
I will be coming back to your website for more soon.
Does your site have a contact page? I’m having a tough time locating it but, I’d like to send you an email. I’ve got some suggestions for your blog you might be interested
in hearing. Either way, great blog and I look forward to seeing it
grow over time.
When someone writes an post he/she maintains the idea of a
user in his/her mind that how a user can be aware of it. Therefore that’s why this article is amazing.
Thanks!
Attractive section of content. I just stumbled upon your website and in accession capital to
assert that I acquire actually enjoyed account your blog posts.
Anyway I will be subscribing to your feeds and even I achievement you access consistently quickly.
Have you ever thought about adding a little bit more than just your articles?
I mean, what you say is fundamental and everything. However think about
if you added some great images or video clips to give your posts more, «pop»!
Your content is excellent but with pics and videos, this
site could certainly be one of the best in its field.
Excellent blog!
Can you tell us more about this? I’d care to find out more details.
Thanks , I’ve just been searching for info about this subject for a long time and yours is the greatest I have discovered so far. But, what about the bottom line? Are you certain about the supply?
Wow, awesome blog layout! How long have you been blogging for?
you made blogging look easy. The overall look of your
site is fantastic, let alone the content!
I blog quite often and I really appreciate your information. This article has really peaked my interest. I’m going to bookmark your site and keep checking for new information about once
per week. I subscribed to your Feed too.
This design is spectacular! You definitely know how to keep a reader entertained.
Between your wit and your videos, I was almost moved to start my own blog (well,
almost…HaHa!) Fantastic job. I really enjoyed what
you had to say, and more than that, how you presented it.
Too cool!
Good day very nice web site!! Guy .. Excellent .. Amazing ..
I’ll bookmark your web site and take the feeds also?
I’m glad to search out a lot of useful info here in the post, we want work out more
strategies in this regard, thanks for sharing. .
. . . .
What a material of un-ambiguity and preserveness of precious familiarity on the topic of unexpected feelings.
My brother suggested I would possibly like this website. He
used to be totally right. This post truly made my
day. You can not imagine just how a lot time I had spent for this information! Thank you!

Оставить отзыв

Жёлтые поля обязательны к заполнению

   

Можете использовать теги <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang=""> <div class=""> <span class=""> <br>