Neden ÔÇťnamespace std;ÔÇŁ kullanmak k├Ât├╝ uygulama olarak kabul edilir?


Al─▒nan cevaba git


Yazmaktan o ba┼čkalar─▒ taraf─▒ndan s├Âylendi using namespace std; kodunda yanl─▒┼č oldu─čunu ve kullanmas─▒ gerekti─čini std::cout ve std::cin yerine do─črudan.

Neden using namespace std; k├Ât├╝ bir uygulama olarak kabul edilir? Verimsiz mi yoksa belirsiz de─či┼čkenleri ( std ad alan─▒ndaki bir i┼člevle ayn─▒ ad─▒ payla┼čan de─či┼čkenler) bildirme riski var m─▒? Performans─▒ etkiler mi?


2451









Cevap say─▒s─▒n─▒ say: 30






Bu hi├žbir ┼čekilde performansla ilgili de─čil. Ancak ┼čunu d├╝┼č├╝n├╝n: Foo ve Bar adl─▒ iki k├╝t├╝phane kullan─▒yorsunuz:

 using namespace foo;
using namespace bar;
 

Her ┼čey iyi ├žal─▒┼č─▒yor ve sorunsuz Blah() olarak Foo ve Quux() Bar'dan arayabilirsiniz . Ancak bir g├╝n, ┼čimdi ad─▒ verilen bir i┼člev sunan Foo 2.0'─▒n yeni bir s├╝r├╝m├╝ne ge├žersiniz Quux() . Art─▒k bir ├žat─▒┼čman─▒z var: Hem Foo 2.0 hem de Bar Quux() global ad alan─▒n─▒za aktar─▒n . Bu, ├Âzellikle i┼člev parametreleri e┼čle┼čirse d├╝zeltmek i├žin biraz ├žaba sarf edecektir.

E─čer kullan─▒lm─▒┼č olsayd─▒ foo::Blah() ve bar::Quux() ard─▒ndan giri┼č foo::Quux() olmayan bir olay olurdu.


2072







Greg'in yazd─▒─č─▒ her ┼čeye kat─▒l─▒yorum ama eklemek isterim: Greg'in s├Âyledi─činden daha da k├Ât├╝le┼čebilir!

Library Foo 2.0, Quux() baz─▒ ├ža─čr─▒lar─▒n─▒z i├žin y─▒llarca ├ža─čr─▒lan kodunuzdan Quux() ├žok daha iyi bir e┼čle┼čme olan bir i┼člev sunabilir bar::Quux() . O zaman kodunuz hala derlenir , fakat sessizce yanl─▒┼č fonksiyonu ├ža─č─▒r─▒r ve tanr─▒ bilir. Bu i┼člerin alabilece─či kadar k├Ât├╝ bir ┼čey.

Unutmay─▒n std ad bunlar─▒n ├žo─ču tan─▒mlay─▒c─▒lar─▒, tonlarca vard─▒r ├žok yayg─▒n olanlar─▒ (d├╝┼č├╝nmek list , sort , string , iterator ├žok ba┼čka bir kod g├Âr├╝nmesini ├žok muhtemeldir, vs.).

Bunun olas─▒ olmad─▒─č─▒n─▒ d├╝┼č├╝n├╝yorsan─▒z: Bu cevab─▒ verdikten yakla┼č─▒k yar─▒m y─▒l sonra , Stack Overflow'ta burada sorulan bir soru vard─▒ std:: . ─░┼čte b├Âyle bir soru i├žin daha yeni bir ├Ârnek. Yani bu ger├žek bir sorundur.


─░┼čte bir veri noktas─▒ daha: Y─▒llar ├Ânce, ben de standart k├╝t├╝phaneden her ┼čeyi ├Âneklemek zorunda olmak can s─▒k─▒c─▒ buldum std:: . Ard─▒ndan, ba┼člang─▒├žta hem using fonksiyon y├Ânergeleri hem de y├Ânergelerin yasaklanmas─▒na karar verilen bir projede ├žal─▒┼čt─▒m . Bil bakal─▒m ne oldu? ├ľn eki yazmaya al─▒┼čmak birka├ž haftam─▒z─▒ ald─▒ ve birka├ž hafta sonra ├žo─čumuz bile kodu daha okunakl─▒ hale getirdi─čine karar verdik . Bunun bir nedeni var: Daha k─▒sa veya daha uzun nesirleri sevip sevmemeniz ├Âznel olsa da, ├Ânekler nesnel olarak koda netlik kat─▒yor. Yaln─▒zca derleyici de─čil, ayn─▒ zamanda hangi tan─▒mlay─▒c─▒n─▒n kullan─▒ld─▒─č─▒n─▒ g├Ârmeyi daha kolay buluyorsunuz.

On y─▒lda, bu proje birka├ž milyon kod sat─▒r─▒na sahip oldu. Bu tart─▒┼čmalar tekrar tekrar g├╝ndeme geldi─činden, bir keresinde (izin verilen) i┼člev kapsam─▒n─▒n using projede ger├žekte ne s─▒kl─▒kta kullan─▒ld─▒─č─▒n─▒ merak ettim . Kaynaklar─▒n─▒ okudum ve kulland─▒─č─▒ sadece bir iki d├╝zine yer buldum. Bana g├Âre bu, bir kez denendi─činde, geli┼čtiricilerin std:: , kullanmalar─▒na izin verilen yerlerde bile her 100 kLoC'de bir bile olsa direktifler kullanmak i├žin yeterince ac─▒ bulmad─▒klar─▒n─▒ g├Âstermektedir.


Alt sat─▒r: A├ž─▒k├ža her ┼čeyin ├Ân ekinin herhangi bir zarar─▒ yoktur, al─▒┼čmas─▒ ├žok az zaman al─▒r ve nesnel avantajlar─▒ vard─▒r. ├ľzellikle, kodun derleyici taraf─▒ndan ve insan okuyucular taraf─▒ndan yorumlanmas─▒n─▒ kolayla┼čt─▒r─▒r - ve kod yazarken esas hedef bu olmal─▒d─▒r.


1318


2009-09-21





using namespace S─▒n─▒flar─▒n─▒z─▒n ba┼čl─▒k dosyalar─▒na konman─▒n sorunu , s─▒n─▒flar─▒n─▒z─▒ (ba┼čl─▒k dosyalar─▒n─▒z─▒ da dahil ederek) kullanmak isteyen herkesi bu di─čer ad alanlar─▒n─▒ 'kullanmaya' (yani her ┼čeyi g├Ârmeye) zorlamas─▒d─▒r.

Ancak, (private) * .cpp dosyalar─▒n─▒za bir use ifadesi koymaktan ├žekinmeyin.


Baz─▒ insanlar─▒n bu ┼čekilde "├Âzg├╝r hissetme" dememe kar┼č─▒ ├ž─▒kmad─▒klar─▒na dikkat edin - ├ž├╝nk├╝ bir cpp dosyas─▒ndaki bir deyim kullanmak bir ba┼čl─▒ktan daha iyidir (├ž├╝nk├╝ ba┼čl─▒k dosyan─▒z─▒ i├žeren insanlar─▒ etkilemez) iyi de─čil (koda ba─čl─▒ olarak, s─▒n─▒f─▒n uygulanmas─▒n─▒n s├╝rd├╝r├╝lmesini zorla┼čt─▒rabilir). Bu SSS ba┼čl─▒─č─▒nda ,

Using-y├Ânergesi, eski C ++ kodu i├žin ve ad alanlar─▒na ge├ži┼či kolayla┼čt─▒rmak i├žin var, ancak muhtemelen en az─▒ndan yeni C ++ kodunuzda kullanmaman─▒z gerekir.

SSS iki alternatif ├Ânerir:

  • Bir kullanma beyan─▒:

     using std::cout; // a using-declaration lets you use cout without qualification
    cout << "Values:";
     
  • Sadece std yazarak ::

     std::cout << "Values:";
     

383







Ge├ženlerde Visual Studio 2010 hakk─▒nda bir ┼čikayette bulundum . Hemen hemen t├╝m kaynak dosyalar─▒n─▒n bu iki sat─▒r─▒ i├žerdi─či ortaya ├ž─▒kt─▒:

 using namespace std;
using namespace boost;
 

├çok fazla Takviye ├Âzelli─či C ++ 0x standard─▒na giriyor ve Visual Studio 2010'da ├žok fazla C ++ 0x ├Âzelli─či bulunuyor, bu nedenle aniden bu programlar derlemedi.

Bu nedenle, bundan ka├ž─▒n─▒lmas─▒ using namespace X; bir t├╝r provad─▒r, k├╝t├╝phanelerde ve / veya ba┼čl─▒k dosyalar─▒nda de─či┼čiklik yap─▒lmas─▒n─▒n bir program─▒ bozmayaca─č─▒ndan emin olman─▒n bir yoludur.


228







K─▒sa versiyon: using ba┼čl─▒k dosyalar─▒nda global bildirimler veya y├Ânergeler kullanmay─▒n . Bunlar─▒ uygulama dosyalar─▒nda kullanmaktan ├žekinmeyin. ─░┼čte Herb Sutter ve Andrei Alexandrescu'nun C ++ Kodlama Standartlar─▒nda bu konu hakk─▒nda s├Âyledikleri (vurgu i├žin kullan─▒lan) benim:

├Âzet

Ad alan─▒ kullan─▒mlar─▒ sizin rahat─▒n─▒z i├žindir, ba┼čkalar─▒na uygulamaman─▒z i├žin de─čil: #include direktifinden ├Ânce asla bir kullanma beyan─▒ veya kullanma talimat─▒ yazmay─▒n.

Sonu├ž: Ba┼čl─▒k dosyalar─▒nda, y├Ânergeleri kullanarak veya bildirimler kullanarak ad alan─▒ d├╝zeyinde yazmay─▒n; bunun yerine, a├ž─▒k├ža ad alan─▒-t├╝m adlar─▒ nitelemek (─░kinci kural birinciden sonra gelir; ├ž├╝nk├╝ ba┼čl─▒klar, di─čer ba┼čl─▒klar─▒n onlardan sonra neyin g├Âr├╝nebilece─čini asla bilemez.)

Tart─▒┼čma

K─▒sacas─▒: #include direktiflerinden sonra uygulama dosyalar─▒n─▒zdaki a├ž─▒klamalar─▒ ve y├Ânergeleri kullanarak liberal olarak ad alan─▒n─▒ kullanabilir ve kullanmal─▒s─▒n─▒z ve bu konuda iyi hissedebilirsiniz. Aksine tekrarlanan iddialara ra─čmen, bildirimleri ve direktifleri kullanan ad alan─▒ k├Ât├╝ de─čildir ve ad alanlar─▒n─▒n amac─▒n─▒ ortadan kald─▒rmazlar. Aksine, bunlar ad alanlar─▒n─▒ kullan─▒labilir yapan ┼čeylerdir .


204







Bir kullanmamal─▒s─▒n─▒z using ├Âzellikle ba┼čl─▒klar─▒nda, k├╝resel kapsamda y├Ânergeyi. Ancak, bir ba┼čl─▒k dosyas─▒nda bile uygun oldu─ču durumlar vard─▒r:

 template <typename FloatType> inline
FloatType compute_something(FloatType x)
{
    using namespace std; // No problem since scope is limited
    return exp(x) * (sin(x) - cos(x * 2) + sin(x * 3) - cos(x * 4));
}
 

Bu, a├ž─▒k kalifikasyondan ( std::sin , std::cos ...) daha iyidir , ├ž├╝nk├╝ daha k─▒sad─▒r ve kullan─▒c─▒ tan─▒ml─▒ kayan nokta t├╝rleriyle ( arg├╝man ba─č─▒ml─▒ arama (ADL) arac─▒l─▒─č─▒yla) ├žal─▒┼čma yetene─čine sahiptir .


117







Global olarak kullanmay─▒n

Sadece k├╝resel olarak kullan─▒ld─▒─č─▒nda ÔÇťk├Ât├╝ÔÇŁ olarak kabul edilir . ├ç├╝nk├╝:

  • Programlad─▒─č─▒n─▒z isim alan─▒n─▒ kar─▒┼čt─▒r─▒yorsunuz.
  • Pek ├žok kulland─▒─č─▒n─▒zda okuyucular, belirli bir tan─▒mlay─▒c─▒n─▒n nereden geldi─čini g├Ârme konusunda zorluk ya┼čayacaklard─▒r using namespace xyz .
  • Kaynak kodunuzun di─čer okurlar─▒ i├žin neyin do─čru oldu─ču, bunun en s─▒k okuyucusu i├žin daha do─črudur: kendiniz. Bir iki y─▒l sonra tekrar gel ve bir g├Âz at ...
  • Yaln─▒zca hakk─▒nda using namespace std konu┼čtuysan─▒z, ald─▒─č─▒n─▒z t├╝m ┼čeylerin fark─▒nda olmayabilirsiniz - ba┼čka bir tane ekledi─činizde #include veya yeni bir C ++ revizyonuna ge├žti─činizde , fark─▒nda olmad─▒─č─▒n─▒z ad ├žat─▒┼čmalar─▒ alabilirsiniz.

Yerel olarak kullanabilirsiniz

Devam edin ve yerel olarak (neredeyse) serbest├že kullan─▒n. Bu, elbette, sizi tekrar etmenizi ├Ânler std:: - ve tekrarlama da k├Ât├╝d├╝r.

Yerel olarak kullanmak i├žin bir deyim

C ++ 03'te swap s─▒n─▒flar─▒n─▒z i├žin bir fonksiyon uygulamak i├žin bir deyim - boyler kodu vard─▒ . Asl─▒nda bir yerel kullanman─▒z ├Ânerildi using namespace std - veya en az─▒ndan using std::swap :

 class Thing {
    int    value_;
    Child  child_;
public:
    // ...
    friend void swap(Thing &a, Thing &b);
};
void swap(Thing &a, Thing &b) {
    using namespace std;      // make `std::swap` available
    // swap all members
    swap(a.value_, b.value_); // `std::stwap(int, int)`
    swap(a.child_, b.child_); // `swap(Child&,Child&)` or `std::swap(...)`
}
 

Bu ┼ču sihri yapar:

  • Derleyici se├žecektir std::swap FOR value_ yani void std::swap(int, int) .
  • E─čer bir a┼č─▒r─▒ y├╝k void swap(Child&, Child&) uyguland─▒ysan─▒z, derleyici onu se├žecektir.
  • E─čer yoksa de─čil o a┼č─▒r─▒ y├╝klenme derleyici kullan─▒r void std::swap(Child&,Child&) ve bu takas elinden geleni.

C ++ 11 ile art─▒k bu modeli kullanmak i├žin hi├žbir sebep yoktur. std::swap Potansiyel bir a┼č─▒r─▒ y├╝k bulmak ve se├žmek i├žin uygulamas─▒ de─či┼čtirildi.


96


2013-01-18





Do─čru ba┼čl─▒k dosyalar─▒n─▒ i├že E─čer aniden gibi isimler var hex , left , plus ya count da k├╝resel kapsamda. Bu std:: isimleri i├žeren fark─▒nda de─čilseniz, bu ┼ča┼č─▒rt─▒c─▒ olabilir . Bu isimleri yerel olarak da kullanmaya ├žal─▒┼č─▒rsan─▒z, biraz kar─▒┼č─▒kl─▒─ča neden olabilir.

T├╝m standart ┼čeyler kendi ad alan─▒ndaysa, kodunuzla veya di─čer kitapl─▒klardaki ad ├žak─▒┼čmalar─▒ konusunda endi┼čelenmenize gerek yoktur.


76


2009-09-21





Deneyimli programc─▒lar, problemlerini ├ž├Âzenleri kullan─▒rlar ve yeni problemler yaratt─▒klar─▒ndan ka├ž─▒n─▒rlar ve bu nedenle bu sebeple ├╝st d├╝zey dosya kullanma direktiflerinden ka├ž─▒n─▒rlar.

Deneyimli programc─▒lar ayr─▒ca kaynak dosyalar─▒n─▒n i├žindeki adlar─▒n tam olarak nitelenmesinden ka├ž─▒nmaya ├žal─▒┼č─▒rlar. Bunun k├╝├ž├╝k bir nedeni , iyi sebepler olmad─▒k├ža daha az kod yeterli oldu─čunda daha fazla kod yazman─▒n zarif olmamas─▒d─▒r . Bunun ana nedeni, tart─▒┼čmaya ba─čl─▒ aramay─▒ (ADL) kapatmakt─▒r.

Bu iyi sebepler neler ? Bazen programc─▒lar a├ž─▒k├ža ADL'yi kapatmak istiyorlar, di─čer zamanlarda ise a├ž─▒k├ža belirlemek istiyorlar.

Yani a┼ča─č─▒dakiler tamam:

  1. ─░┼člev d├╝zeyinde kullan─▒m y├Ânergeleri ve i┼člev uygulamalar─▒ i├žindeki bildirimler
  2. Kaynak dosya d├╝zeyinde kaynak dosya d├╝zeyinde kullan─▒m-bildirimleri
  3. (Bazen) kaynak-dosya-seviye-kullanma y├Ânergeleri

45







Ba┼čka bir neden s├╝rpriz.

Ben g├Âr├╝rseniz cout << blah , yerine std::cout << blah I. d├╝┼č├╝n├╝yorum: Bu nedir cout ? Normal cout mi ├ľzel bir ┼čey mi?


44







K├╝resel olarak kullan─▒lmamas─▒ gerekti─čine kat─▒l─▒yorum, ancak yerelde kullanmak gibi k├Ât├╝ bir ┼čey de─čil namespace . ─░┼čte "C ++ Programlama Dili" nden bir ├Ârnek :

 namespace My_lib {

    using namespace His_lib; // Everything from His_lib
    using namespace Her_lib; // Everything from Her_lib

    using His_lib::String; // Resolve potential clash in favor of His_lib
    using Her_lib::Vector; // Resolve potential clash in favor of Her_lib

}
 

Bu ├Ârnekte, olu┼čumlar─▒ndan kaynaklanan potansiyel isim ├žat─▒┼čmalar─▒n─▒ ve belirsizliklerini ├ž├Âzd├╝k.

Orada a├ž─▒k├ža bildirilen isimler (kullanarak-bildirimleri kullanarak bildirilen isimler de dahil olmak ├╝zere His_lib::String ) ba┼čka bir kapsamda bir use-y├Ânergesi ( using namespace Her_lib ) ile eri┼čilebilir k─▒lan isimlere g├Âre ├Ânceliklidir .


40







Ayr─▒ca bunun k├Ât├╝ bir uygulama oldu─čunu d├╝┼č├╝n├╝yorum. Niye ya? Sadece bir g├╝n bir isim alan─▒n─▒n fonksiyonunun maddeleri b├Âlmek oldu─čunu d├╝┼č├╝nd├╝m, bu y├╝zden her ┼čeyi tek bir k├╝resel ├žantaya atmakla bozulmamal─▒y─▒m.

Ancak, s─▒k s─▒k 'cout' ve 'cin' kullan─▒rsam ┼čunu yazar─▒m: using std::cout; using std::cin; .cpp dosyas─▒na (hi├žbir zaman i├žinde oldu─ču gibi ba┼čl─▒k dosyas─▒nda de─čil #include ). Ben kimsenin akl─▒ ba┼č─▒nda hi├ž bir ak─▒┼č isim olaca─č─▒n─▒ d├╝┼č├╝n├╝yorum cout ya cin . ;)


28







Kodu g├Ârmek ve ne yapt─▒─č─▒n─▒ bilmek g├╝zel. Ben g├Âr├╝rsem std::cout bunu biliyorum cout ak─▒┼č─▒ std k├╝t├╝phanesine. E─čer g├Âr├╝rsem, cout bilmiyorum. Bu olabilir olmak cout ak─▒┼č─▒ std k├╝t├╝phanesine. Veya int cout = 0; ayn─▒ fonksiyonda on sat─▒r daha y├╝ksek olabilir . Veya bu dosyada static adland─▒r─▒lm─▒┼č bir de─či┼čken cout . Her ┼čey olabilir.

┼×imdi ├Âzellikle b├╝y├╝k olmayan bir milyon sat─▒rl─▒k kod ├╝ss├╝ al─▒n ve bir hata m─▒ ar─▒yorsunuz, yani bu bir milyon sat─▒rda yapmas─▒ gerekeni yapmayan bir sat─▒r oldu─čunu biliyorsunuzdur. cout << 1; bir static int ismi okuyabilir cout , bir bit sola kayd─▒rabilir ve sonucu f─▒rlatabilir. Bir b├Âcek ararken, bunu kontrol etmek zorunda kalaca─č─▒m. Ger├žekten ger├žekten nas─▒l g├Ârmeyi tercih etti─čimi g├Ârebiliyor std::cout musun?

E─čer bir ├Â─čretmenseniz ve bir ya┼čam i├žin herhangi bir kod yaz─▒p s├╝rd├╝rmek zorunda kalmad─▒ysan─▒z, bu ger├žekten iyi bir fikir gibi g├Âr├╝nen ┼čeylerden biridir. Kod g├Ârmeyi ├žok seviyorum (1) Ne yapt─▒─č─▒n─▒ biliyorum; ve (2) Yazan ki┼činin ne yapt─▒─č─▒n─▒ bildi─činden eminim.


25







Hepsi karma┼č─▒kl─▒─č─▒ y├Ânetmekle ilgili. Ad alan─▒n─▒ kullanmak istemedi─činiz ┼čeyleri ├žeker ve bu nedenle muhtemelen hata ay─▒klamay─▒ zorla┼čt─▒r─▒r (muhtemelen s├Âyleyebilirim). Std :: kullanarak her yerde okumak zordur (daha fazla metin ve hepsi).

Kurslar i├žin Atlar - karma┼č─▒kl─▒─č─▒n─▒z─▒ en iyi nas─▒l yapabildi─činizi ve hissedebildi─činizi y├Ânetin.


22







Ayn─▒ anda bir├žok ad alan─▒ kullanmak elbette felaket i├žin bir re├žetedir, ancak SADECE ad alan─▒n─▒ std ve yaln─▒zca ad alan─▒n─▒ kullanmak std bence ├žok b├╝y├╝k bir ┼čey de─čil ├ž├╝nk├╝ yeniden tan─▒mlama yaln─▒zca kendi kodunuzla ger├žekle┼čebilir ...

Bu y├╝zden sadece i┼člevlerini "int" veya "class" gibi ayr─▒lm─▒┼č isimler olarak d├╝┼č├╝n├╝n ve bu kadar.

─░nsanlar bu konuda anal olmaya son vermeli. ├ľ─čretmenin ba┼čtan beri hakl─▒yd─▒. Sadece B─░R ad alan─▒n─▒ kullan─▒n; ilk etapta ad alanlar─▒n─▒ kullanman─▒n as─▒l amac─▒ budur. Ayn─▒ anda birden fazla kullanmaman─▒z gerekiyor. Senin de─čilsen. B├Âylece tekrar, yeniden tan─▒mlama olmayacak.


18







D├╝┼č├╝nmek

 // myHeader.h
#include <sstream>
using namespace std;


// someoneElses.cpp/h
#include "myHeader.h"

class stringstream {  // Uh oh
};
 

Bunun basit bir ├Ârnek oldu─čuna dikkat edin. ─░├žerdi─či 20 dosya ve di─čer i├že aktar─▒lm─▒┼č dosyalar─▒n─▒z varsa, sorunu ├ž├Âzmek i├žin bir s├╝r├╝ ba─č─▒ml─▒l─▒─č─▒n─▒z olacakt─▒r. En k├Ât├╝s├╝ ise, birbiriyle ├želi┼čen tan─▒mlara ba─čl─▒ olarak di─čer mod├╝llerde ilgisiz hatalar alabilmenizdir.

Korkun├ž de─čil, ancak ba┼čl─▒k dosyalar─▒nda veya genel ad alan─▒nda kullanmayarak ba┼č a─čr─▒lar─▒ndan kurtulacaks─▒n─▒z. Muhtemelen bunu ├žok s─▒n─▒rl─▒ bir kapsamda yapmak tamamd─▒r, ancak fonksiyonlar─▒m─▒n nereden geldi─čini netle┼čtirmek i├žin fazladan be┼č karakter yazmakta sorun ya┼čamad─▒m.


18







  1. Sizden farkl─▒ bi├žimlerde ve en iyi uygulamalarda g├Âr├╝┼čleri olan insanlar taraf─▒ndan yaz─▒lm─▒┼č kodlar─▒ okuyabilmeniz gerekir.

  2. Sadece kullan─▒yorsan─▒z cout , hi├ž kimse kafan─▒z kar─▒┼čmaz. Ancak etrafta u├žu┼čan ├žok say─▒da isim alan─▒n─▒z oldu─čunda ve bu s─▒n─▒f─▒ g├Âr├╝yorsan─▒z ve ne yapt─▒─č─▒ndan tam olarak emin de─čilseniz, ad alan─▒n─▒n a├ž─▒k├ža belirtilmesi, bir t├╝r yorum olarak davran─▒r. ─░lk bak─▒┼čta "ah, bu bir dosya sistemi i┼člemidir" veya "a─č ba─člant─▒s─▒ yapan" g├Ârebilirsiniz.


18







Buradaki di─čerleriyle ayn─▒ fikirdeyim, ancak okunabilirlikle ilgili endi┼čeleri gidermek istiyorum - sadece dosya, i┼člev veya s─▒n─▒f bildiriminin ├╝st├╝ndeki typedef komutlar─▒n─▒ kullanarak bunlar─▒n hepsini ├Ânleyebilirsiniz.

Bunu genellikle s─▒n─▒f bildirimimde, bir s─▒n─▒ftaki y├Ântemler benzer veri t├╝rleriyle (├╝yeler) ilgilenme e─čiliminde oldu─ču i├žin kullan─▒yorum ve typedef, s─▒n─▒f ba─člam─▒nda anlaml─▒ bir ad atama f─▒rsat─▒d─▒r. Bu asl─▒nda s─▒n─▒f y├Ântemlerinin tan─▒mlar─▒nda okunabilirli─či sa─člar.

 // Header
class File
{
   typedef std::vector<std::string> Lines;
   Lines ReadLines();
}
 

ve uygulamada:

 // .cpp
Lines File::ReadLines()
{
    Lines lines;
    // Get them...
    return lines;
}
 

aksine:

 // .cpp
vector<string> File::ReadLines()
{
    vector<string> lines;
    // Get them...
    return lines;
}
 

veya:

 // .cpp
std::vector<std::string> File::ReadLines()
{
    std::vector<std::string> lines;
    // Get them...
    return lines;
}
 

12


2015-02-12





Bir ad alan─▒, adland─▒r─▒lm─▒┼č bir kapsamd─▒r. Ad alanlar─▒, ilgili bildirimleri gruplamak ve ayr─▒ ├Â─čeleri ayr─▒ tutmak i├žin kullan─▒l─▒r. ├ľrne─čin, ayr─▒ olarak geli┼čtirilen iki kitapl─▒k, farkl─▒ ├Â─čelere g├Ânderme yapmak i├žin ayn─▒ ad─▒ kullanabilir, ancak bir kullan─▒c─▒ yine de ikisini de kullanabilir:

 namespace Mylib{
    template<class T> class Stack{ /* ... */ };
    // ...
}

namespace Yourlib{
    class Stack{ /* ... */ };
    // ...
}

void f(int max) {
    Mylib::Stack<int> s1(max); // Use my stack
    Yourlib::Stack    s2(max); // Use your stack
    // ...
}
 

Bir ad alan─▒n─▒ tekrarlamak, hem okuyucular hem de yazarlar i├žin dikkat da─č─▒t─▒c─▒ olabilir. Sonu├ž olarak, belirli bir ad alan─▒ndan adlar─▒n a├ž─▒k├ža nitelendirilmeden m├╝mk├╝n oldu─čunu belirtmek m├╝mk├╝nd├╝r. ├ľrne─čin:

 void f(int max) {
    using namespace Mylib; // Make names from Mylib accessible
    Stack<int> s1(max); // Use my stack
    Yourlib::Stack s2(max); // Use your stack
    // ...
}
 

Ad alanlar─▒, farkl─▒ k├╝t├╝phanelerin ve farkl─▒ kod s├╝r├╝mlerinin y├Ânetimi i├žin g├╝├žl├╝ bir ara├ž sunar. ├ľzellikle, programc─▒ya yerel olmayan bir isme at─▒fta bulunma ┼čeklinin ne kadar a├ž─▒k oldu─čunu alternatifler sunarlar.

Kaynak: Bjarne Stroustrup'tan C ++ Programlama Diline Genel Bir Bak─▒┼č


12







Endi┼čeyi netle┼čtirmek i├žin somut bir ├Ârnek. ─░ki k├╝t├╝phanenizin oldu─ču foo ve bar her birinin kendi ad alan─▒na sahip oldu─ču bir durum oldu─čunu hayal edin :

 namespace foo {
    void a(float) { /* Does something */ }
}

namespace bar {
    ...
}
 

┼×imdi kulland─▒─č─▒n─▒z diyelim foo ve bar a┼ča─č─▒daki gibi kendi program─▒nda birlikte:

 using namespace foo;
using namespace bar;

void main() {
    a(42);
}
 

Bu noktada her ┼čey yolunda. Program─▒n─▒z─▒ ├žal─▒┼čt─▒rd─▒─č─▒n─▒zda 'bir ┼čeyler yapar'. Ancak daha sonra g├╝ncelleme yapars─▒n─▒z bar ve diyelim ki bu ┼čekilde de─či┼čti.

 namespace bar {
    void a(float) { /* Does something completely different */ }
}
 

Bu noktada bir derleyici hatas─▒ al─▒rs─▒n─▒z:

 using namespace foo;
using namespace bar;

void main() {
    a(42);  // error: call to 'a' is ambiguous, should be foo::a(42)
}
 

Bu nedenle, 'a'n─▒n ne anlama geldi─čini netle┼čtirmek i├žin bir miktar bak─▒m yapman─▒z gerekecektir foo::a . Bu istenmeyen bir ┼čey, ama neyse ki olduk├ža kolay ( derleyicinin belirsiz olarak i┼čaret etti─či foo:: t├╝m ├ža─čr─▒lar─▒n ├Ân├╝ne ekleyin a ).

Ancak bunun yerine bunun yerine ├žubu─čun de─či┼čti─či alternatif bir senaryo d├╝┼č├╝n├╝n:

 namespace bar {
    void a(int) { /* Does something completely different */ }
}
 

Bu noktada i├žin ├ža─čr─▒ a(42) aniden ba─člar bar::a yerine foo::a ve bunun yerine 'bir ┼čey' ├Âyle 'tamamen farkl─▒ bir ┼čey' yapman─▒n. Derleyici uyar─▒s─▒ falan yok. Program─▒n─▒z sessizce ├Âncekinden farkl─▒ bir ┼čey yapmaya ba┼člad─▒.

Bir ad alan─▒n─▒ kullan─▒rken, b├Âyle bir senaryoyu riske atars─▒n─▒z, bu y├╝zden insanlar ad alanlar─▒n─▒ kullanmaktan rahats─▒z oluyorlar. Bir isim alan─▒ndaki ne kadar fazla ┼čey olursa, ├žat─▒┼čma riski o kadar artar, bu y├╝zden insanlar isim alan─▒n─▒ kullan─▒rken std (o isim alan─▒ndaki ┼čeylerin say─▒s─▒ nedeniyle) di─čer isim alanlar─▒ndan daha fazla rahats─▒z olabilirler .

Sonu├žta bu, yaz─▒labilirlik ile g├╝venilirlik / bak─▒m aras─▒nda bir dengedir. Okunabilirlik de fakt├Âr├╝ etkileyebilir, ancak her iki y├Ânde de bunun arg├╝manlar─▒n─▒ g├Ârebiliyordum. Normalde, g├╝venilirli─čin ve bak─▒m─▒n daha ├Ânemli oldu─čunu s├Âyleyebilirim, ancak bu durumda, olduk├ža nadir bir g├╝venilirlik / bak─▒m etkisi i├žin yaz─▒labilirlik maliyetini s├╝rekli ├Âdeyeceksiniz. 'En iyi' takas, projenizi ve ├Ânceliklerinizi belirleyecektir.


11







using namespace std Ayr─▒ca algoritma k├╝t├╝phanesindeki bir fonksiyon olan, say─▒m─▒n belirsizli─či nedeniyle bir derleme hatas─▒ atan bir ├Ârnek .

 #include <iostream>

using namespace std;

int count = 1;
int main() {
    cout << count << endl;
}
 

9







Her ko┼čulda bunun mutlaka k├Ât├╝ bir uygulama oldu─čunu d├╝┼č├╝nm├╝yorum, ancak kullan─▒rken dikkatli olman─▒z gerekir. Bir kitapl─▒k yaz─▒yorsan─▒z, kitapl─▒─č─▒n─▒z─▒n di─čer kitapl─▒klar ile kafa atmas─▒n─▒ engellemek i├žin muhtemelen kapsam ├ž├Âz├╝mleme i┼čle├žlerini ad alan─▒yla birlikte kullanmal─▒s─▒n─▒z. Uygulama seviyesi kodu i├žin yanl─▒┼č bir ┼čey g├Ârm├╝yorum.


8







Yaz─▒l─▒m─▒n─▒z─▒ veya proje performans─▒n─▒ daha da k├Ât├╝le┼čtirmez. Kaynak kodunuzun ba┼č─▒na isim alan─▒n─▒n dahil edilmesi fena de─čil. using namespace std Talimat─▒n eklenmesi, ihtiya├žlar─▒n─▒za ve yaz─▒l─▒m─▒ veya projeyi geli┼čtirme ┼čeklinize g├Âre de─či┼čir.

namespace std C ++ standart fonksiyonlar─▒ ve de─či┼čken i├žerir. Bu ad alan─▒, C ++ standart i┼člevlerini s─▒kl─▒kla kulland─▒─č─▒n─▒zda kullan─▒┼čl─▒d─▒r.

Bu sayfada belirtildi─či gibi :

Namespace std kullanarak yap─▒lan ifade genellikle k├Ât├╝ uygulama olarak kabul edilir. Bu ifadenin alternatifi, her bir tip ilan etti─čimizde tan─▒mlay─▒c─▒n─▒n kapsam i┼člecini (: :) kullanarak kulland─▒─č─▒ ad alan─▒n─▒ belirlemektir.

Ve ┼ču g├Âr├╝┼če bak─▒n :

Ad alan─▒n─▒ yo─čun ┼čekilde kulland─▒─č─▒n─▒zda ve hi├žbir ┼čeyin ├žarp─▒┼čmayaca─č─▒ndan emin olmad─▒─č─▒n─▒zda kaynak dosyan─▒zda "namespace std" komutunu kullanmakta sorun yoktur.

Baz─▒ insanlar using namespace std kaynak dosyalar─▒n─▒za dahil etmenin k├Ât├╝ bir uygulama oldu─čunu s├Âylemi┼čti, ├ž├╝nk├╝ bu ad alan─▒ndan b├╝t├╝n fonksiyonlar─▒ ve de─či┼čkenleri ├ža─č─▒r─▒yorsunuz. namespace std ─░├žinde bulunan ba┼čka bir fonksiyonla ayn─▒ isimde yeni bir fonksiyon tan─▒mlamak istedi─činizde, fonksiyonu a┼č─▒r─▒ y├╝klersiniz ve derleme veya ├žal─▒┼čt─▒rma nedeniyle problemler ortaya ├ž─▒kar─▒r. Bekledi─činiz gibi derlenmeyecek veya y├╝r├╝t├╝lmeyecektir.

Bu sayfada belirtildi─či gibi :

Her ne kadar std ad alan─▒nda tan─▒mlanm─▒┼č bir s─▒n─▒fa veya t├╝re eri┼čmek istedi─čimizde, std :: yazmam─▒zdan kurtarmam─▒za ra─čmen, std ad alan─▒n─▒n tamam─▒n─▒ program─▒n o anki ad alan─▒na al─▒r. Bunun neden bu kadar iyi bir ┼čey olmad─▒─č─▒n─▒ anlamak i├žin birka├ž ├Ârnek verelim.

...

┼×imdi, daha sonraki bir geli┼čtirme a┼čamas─▒nda, ÔÇťfooÔÇŁ adl─▒ bir k├╝t├╝phanede ├Âzel olarak geli┼čtirilen bir ba┼čka cout s├╝r├╝m├╝ kullanmak istiyoruz (├Ârne─čin).

...

Cout'un hangi k├╝t├╝phaneye i┼čaret etti─čini belirsizli─čin ne oldu─čuna dikkat edin. Derleyici bunu alg─▒layabilir ve program─▒ derlemez. En k├Ât├╝ durumda, program hala derlenebilir, ancak yanl─▒┼č i┼člevi ├ža─č─▒rabilirsiniz, ├ž├╝nk├╝ hi├žbir zaman tan─▒mlay─▒c─▒n─▒n hangi ad alan─▒na ait oldu─čunu belirlemedik.


7







Nitelenmemi┼č i├že aktar─▒lm─▒┼č tan─▒mlay─▒c─▒larla , tan─▒mlay─▒c─▒lar─▒n nerede ilan edildi─čini bulmak i├žin grep gibi harici arama ara├žlar─▒na ihtiyac─▒n─▒z vard─▒r. Bu, program do─črulu─čunu d├╝┼č├╝nd├╝rmeyi zorla┼čt─▒r─▒r.


6







Nerede bulundu─čuna ba─čl─▒. Ortak bir ba┼čl─▒ksa, ad alan─▒n─▒n de─čerini global ad alan─▒na birle┼čtirerek k├╝├ž├╝lt├╝yorsunuz. Akl─▒n─▒zda bulundurun, bu mod├╝l k├╝reler yapmak i├žin temiz bir yol olabilir.


6







Bu genellikle k├╝resel ad alan─▒ kirlili─či olarak bilinen k├Ât├╝ bir uygulamad─▒r. Birden fazla isim alan─▒ imzayla ayn─▒ fonksiyon ad─▒na sahipse, problemler ortaya ├ž─▒kabilir, o zaman derleyicinin hangisini arayaca─č─▒na karar vermesi belirsiz olacakt─▒r ve bu gibi fonksiyon ├ža─čr─▒n─▒zdaki isim alan─▒n─▒ belirlerken bunlardan ka├ž─▒n─▒labilir std::cout . Bu yard─▒mc─▒ olur umar─▒m. :)


6







"Neden 'namespace std kullan─▒yor;' C ++ 'da k├Ât├╝ bir uygulama olarak m─▒ kabul edilir? "

Bunu di─čer tarafa koydum: Neden baz─▒lar─▒ taraf─▒ndan hantal oldu─ču d├╝┼č├╝n├╝len be┼č fazladan karakter yazmak?

├ľrne─čin, bir say─▒sal yaz─▒l─▒m par├žas─▒ yazmay─▒ d├╝┼č├╝n├╝n. Genel "std :: vector" yi "vector" ye d├╝┼č├╝rerek, "vector" sorunlu alan─▒n en ├Ânemli kavramlar─▒ndan biriyken neden genel isim alan─▒m─▒ kirletmeyi d├╝┼č├╝neyim ki?


6







Di─čerleriyle ayn─▒ fikirdeyim - isim ├žat─▒┼čmalar─▒, belirsizlikler istiyor ve ger├žek ┼ču ki daha az a├ž─▒k. Kullan─▒m─▒n─▒ g├Ârebildi─čim halde using ki┼čisel tercihim s─▒n─▒rland─▒rmak. Ayr─▒ca di─čerlerinin de belirtti─či ┼čeyleri kuvvetle d├╝┼č├╝n├╝rd├╝m:

Olduk├ža yayg─▒n bir ad olabilecek bir i┼člev ad─▒ bulmak istiyorsan─▒z, ancak yaln─▒zca std ad alan─▒nda bulmak istiyorsan─▒z (veya tam tersi - ad alan─▒nda olmayan t├╝m aramalar─▒ de─či┼čtirmek istiyorsunuz std , ad alan─▒ X , ...), peki bunu nas─▒l yapmay─▒ ├Âneriyorsun?

Bunu yapmak i├žin bir program yazabilirsiniz, ancak projenizi s├╝rd├╝rmek i├žin bir program yazmak yerine, projeniz ├╝zerinde ├žal─▒┼čarak zaman harcamak daha iyi olmaz m─▒yd─▒?

┼×ahsen ben asl─▒nda std:: ├Ânek umursam─▒yorum . G├Âr├╝n├╝┼če sahip olmamas─▒ndan daha ├žok ho┼čuma gitti. Bunun kesin olup olmad─▒─č─▒ ve ÔÇťbu benim kodum de─čilÔÇŽ standart k├╝t├╝phaneyi kullan─▒yorumÔÇŁ diyor ya da ba┼čka bir ┼čey olup olmad─▒─č─▒n─▒ bilmiyorum ama daha g├╝zel g├Âr├╝n├╝yor. Sadece son zamanlarda C ++ 'a girdi─čim i├žin tuhaf olabilir (kullan─▒lm─▒┼č ve hala C ve di─čer dilleri ├žok daha uzun s├╝re kullan─▒yorum ve C, t├╝m zamanlar─▒n en sevdi─čim dilidir, montaj─▒n hemen ├╝st├╝nde).

Bir k─▒sm─▒ daha yukar─▒da anlat─▒lanlarla ve ba┼čkalar─▒n─▒n i┼čaret etti─či ┼čeyle ilgili olmas─▒na ra─čmen. Bu k├Ât├╝ bir uygulama olsa da, bazen std::name programa ├Âzel uygulama i├žin standart k├╝t├╝phane versiyonunu ve ad─▒n─▒ sakl─▒yorum. Evet, bu ger├žekten seni ─▒s─▒r─▒p ─▒s─▒rd─▒rabilir, ama hepsi bu projeye s─▒f─▒rdan ba┼člad─▒m ve onun i├žin tek programc─▒ benim. ├ľrnek: A┼č─▒r─▒ y├╝kler std::string ve arar─▒m string . Yard─▒mc─▒ eklerim var. K─▒smen C ve Unix (+ Linux) k├╝├ž├╝k harflere olan e─čilimim nedeniyle yapt─▒m.

Bunun yan─▒nda, ad alan─▒ takma adlar─▒ olabilir. Bu, at─▒fta bulunulmam─▒┼č olabilecek faydal─▒ bir ├Ârnek. C ++ 11 standard─▒n─▒ ve ├Âzellikle libstdc ++ ile kullan─▒yorum. Tamamen std::regex deste─či yok. Tabii, derler, ancak programc─▒n─▒n sonundaki bir hata oldu─ču sat─▒rlar─▒ boyunca bir istisna atar. Ancak uygulama eksikli─čidir.

─░┼čte bunu nas─▒l ├ž├Âzd├╝m. Boost'un regex'ini kurun ve ba─člay─▒n. Sonra libstdc ++ tamamen uyguland─▒─č─▒ zaman, sadece bu blo─ču kald─▒rmam gerekecek ve kod ayn─▒ kal─▒yor:

 namespace std
{
    using boost::regex;
    using boost::regex_error;
    using boost::regex_replace;
    using boost::regex_search;
    using boost::regex_match;
    using boost::smatch;
    namespace regex_constants = boost::regex_constants;
}
 

Bunun k├Ât├╝ bir fikir olup olmad─▒─č─▒n─▒ tart─▒┼čmayaca─č─▒m. Ben ancak i├žin temiz tutar oldu─čunu iddia edecektir benim proje ve ayn─▒ zamanda belirli yapar: Do─čru, ben kullan─▒m Boost zorunda ama ben libstdc gibi kullan─▒yorum ++ eninde sonunda olacakt─▒r. Evet, kendi projenizi ba┼člatmak ve en ba┼č─▒ndan bir standartla (...) ba┼člamak, bak─▒m, geli┼čtirme ve projeyle ilgili her ┼čeyde yard─▒mc─▒ olmak i├žin ├žok uzun bir yol kat ediyor!

Sadece bir ┼čey a├ž─▒klamak: Asl─▒nda bir s─▒n─▒f─▒n bir isim kullanmak iyi bir fikir oldu─čunu sanm─▒yorum / ne olursa olsun i├žinde STL kasten ve daha spesifik olarak yerine. String, 'String' fikrini be─čenmedi─čim i├žin istisnad─▒r (burada birinci, yukar─▒daki veya ikinciyi g├Âz ard─▒ edin, gerekirse cezaland─▒r─▒n).

Oldu─ču gibi, hala C'ye kar┼č─▒ ├žok ├Ânyarg─▒l─▒y─▒m ve C ++ 'a kar┼č─▒ ├Ânyarg─▒l─▒y─▒m. Ayr─▒nt─▒lar─▒ ay─▒rmak, ├╝zerinde ├žal─▒┼čt─▒─č─▒m ┼čeylerin ├žo─čuna daha fazla uyuyor (ama bu kendimi daha iyi bir al─▒┼čt─▒rma yapmak ve ba┼čka bir dil ├Â─črenmek i├žin iyi bir y├Ântemdi. daha az kapal─▒ fikirli, daha az kibirli ve daha fazla kabul etti─či gibi.). Ama ne oldu─čunu ben yapmak i├žin sanki bir isim ├žat─▒┼čmas─▒ neden olur ad─▒na iki (ayn─▒ ┼čey) s─▒ralamak ben ger├žekten listesini kullan─▒n yoktur ve (, olduk├ža jenerik de─čil mi edilir?): Kullan─▒┼čl─▒ baz─▒lar─▒ zaten ├Ânerilen budur using namespace std; ve bu y├╝zden bu ama├žla, standart olmay─▒ tercih edersem, kontrol etmeyi ve bilmeyi tercih ederim, sonra belirtmem gerekecek. Basit├že s├Âylemek gerekirse, izin verilmedi─čini varsaymak yok.

Ve Boost'un regex'inin bir par├žas─▒ oldu─ču gibi std . Bunu gelecekteki entegrasyon i├žin yap─▒yorum ve - yine, bunun tamamen ├Ânyarg─▒l─▒ oldu─čunu kabul ediyorum - bunun kadar ├žirkin oldu─čunu sanm─▒yorum boost::regex:: ... . Ger├žekten, bu benim i├žin ba┼čka bir ┼čey. C ++ 'ta hala g├Âr├╝n├╝┼č ve y├Ântemlerde tam olarak kabul etmek i├žin gelmemi┼č oldu─čum pek ├žok ┼čey var (ba┼čka bir ├Ârnek: variadic ┼čablonlar─▒ var var arg├╝manlar─▒na kar┼č─▒ [variadic ┼čablonlar─▒ ├žok ├žok faydal─▒ olsa da!]. Kabul etti─čim ki┼čiler bile zordu ve h├ól├ó onlarla sorunlar─▒m var.


6


2014-10-13





Sorunuza cevap vermek i├žin pratik olarak ┼č├Âyle bakar─▒m: pek ├žok programc─▒ (hepsi de─čil) isim alan─▒ std'yi ├ža─č─▒r─▒r. Bu nedenle, ki┼či std ad─▒ndakiyle ayn─▒ isimleri etkileyen veya kullanan ┼čeyleri kullanma DE─×─░L al─▒┼čkanl─▒─č─▒nda olmal─▒d─▒r. Bu, ├žok fazla kabul g├Ârm├╝┼č bir ┼čeydir, ancak kesinlikle konu┼čarak ortaya ├ž─▒kabilecek olas─▒ tutarl─▒ s├Âzc├╝kler ve takma adlarla kar┼č─▒la┼čt─▒r─▒ld─▒─č─▒nda ├žok da fazla de─čildir.

Demek istedi─čim, ger├žekten ... "mevcut olana g├╝venme" demek sadece seni var olmad─▒─č─▒na g├╝venmek i├žin kuruyor. S├╝rekli kod snippet'lerini ├Âd├╝n├ž alma ve bunlar─▒ s├╝rekli onarma konular─▒nda sorun ya┼čayacaks─▒n─▒z. Sadece kullan─▒c─▒ tan─▒ml─▒ ve ├Âd├╝n├ž ald─▒─č─▒n─▒z ├╝r├╝nleri s─▒n─▒rl─▒ kapsamda olmas─▒ gerekti─či gibi saklay─▒n ve genel olarak ├çOK ayr─▒lmay─▒n (d├╝r├╝st olmak gerekirse genel olarak "daha sonra derleme" amac─▒yla hemen hemen her zaman son ├žare olmal─▒d─▒r). Ger├žekten de, ├Â─čretmeninizden alman─▒z─▒n k├Ât├╝ bir tavsiye oldu─čunu d├╝┼č├╝n├╝yorum ├ž├╝nk├╝ std kullanmak hem "cout" hem de "std :: cout" i├žin ├žal─▒┼čacak, ancak std kullanmamak sadece "std :: cout" i├žin ├žal─▒┼čacak. Her zaman kendi kodunuzu yazabilecek kadar ┼čansl─▒ olmayacaks─▒n─▒z.

NOT: Derleyicilerin nas─▒l ├žal─▒┼čt─▒─č─▒n─▒ biraz ├Â─črenene kadar verimlilik konular─▒na ├žok fazla odaklanmay─▒n. K├╝├ž├╝k bir kodlama deneyimiyle, iyi kodu basit bir ┼čeyde ne kadar genelle┼čtirebileceklerini anlamadan ├Ânce onlar hakk─▒nda bu kadar ┼čey ├Â─črenmek zorunda de─čilsiniz. Her ┼čeyi her ┼čeyi C'ye yazd─▒─č─▒n─▒z kadar basit. ─░yi kod sadece olmas─▒ gerekti─či kadar karma┼č─▒k.


5







Tecr├╝belerime g├Âre, e─čer kullanan birden fazla k├╝t├╝phaneniz varsa cout , ama farkl─▒ bir ama├ž i├žin yanl─▒┼č kullanabilirsiniz cout .

├ľrne─čin, ben yazarsan─▒z, using namespace std; ve using namespace otherlib; sadece yaz─▒n cout ziyade, (her ikisi de i├žinde olmak olur) std::cout (veya 'otherlib::cout' ), yanl─▒┼č birini kullan─▒n ve hatalar─▒ alabilirsiniz. Kullan─▒m─▒ ├žok daha etkili ve verimli std::cout .


5



─░lgili yay─▒nlar


─░frame'ler 'k├Ât├╝ uygulama' olarak m─▒ kabul edilir? [kapal─▒]

Varl─▒k g├Âvdesi olmadan HTTP POST ger├žekle┼čtirmek k├Ât├╝ uygulama olarak m─▒ kabul edilir?

HTML'de onClick () yaz─▒l─▒m─▒n─▒ neden k├Ât├╝ bir uygulama kullan─▒yor?

Exception.printStackTrace () neden k├Ât├╝ uygulama olarak kabul edilir?

Yerel nesneleri geni┼čletmek neden k├Ât├╝ bir uygulama?

PHP'deki global de─či┼čkenlerin k├Ât├╝ uygulama oldu─ču d├╝┼č├╝n├╝l├╝yor mu? ├ľyleyse neden?

C++ hatal─▒ uygulamada assert () kullan─▒yor mu?

Neden dizilerde 'i├žin (listedeki var)') JavaScriptÔÇÖte k├Ât├╝ bir uygulama olarak kabul ediliyor?

Mutlak konumland─▒rma kullanmak k├Ât├╝ bir uygulama olarak m─▒ kabul edilir?

Assert.Fail () k├Ât├╝ uygulama olarak m─▒ kabul edilir?

Etiketle ilgili di─čer sorular [c++]


ÔÇťHindley-Milner'in hangi k─▒sm─▒n─▒ anlamad─▒n?ÔÇŁ

IEnumerable <T> / IQueryable <T> ile Dinamik LINQ OrderBy

Python'da bir listeyi ters s─▒rada hareket ettirme

pg_config ├žal─▒┼čt─▒r─▒labilir bulunamad─▒

Neden bu () ve super () bir yap─▒c─▒daki ilk ifade olmak zorunda?

Python'da ortam de─či┼čkenleri nas─▒l ayarlan─▒r?

'Mutable' anahtar s├Âzc├╝─č├╝n├╝n, de─či┼čkenin const i┼člevi taraf─▒ndan de─či┼čtirilmesine izin vermekten ba┼čka bir amac─▒ var m─▒?

Filtrelenmi┼č ng-tekrar veri uzunlu─ču nas─▒l g├Âsterilir

Mevcut bir klas├Âre "git klonlamak" i├žin en iyi uygulama nedir?