Jump to content
newbie288

What Is The Function For This: Using Namespace Std

Recommended Posts

namespace ni sejenis abstract container untuk kumpulkan identifier2 supaya x terjadi naming collision...jadi kalau ada nama sama, tak jadi masalah kalau duduk dlm namespace berlainan...cthnya, kalau ada 2 include files yang ada function bernama "getVal", kalau xde namespace, mmg xleh nk guna dlm satu c0de file (C guna naming convention utk mengelakkan mende ni, mmg leceh jdnya...C++ sng sbb ada namespace ni)...cth:

//file1 
namespace saya{
    int getVal(){return 4;};
};

//file2 
namespace dia{
     int getVal(){return 5;};
};

//so kita bole guna: 
#include "file1"
#include "file2"

int main(){
cout<< "nombor saya: "<< saya::getVal()<<"\n"; //output = 4
cout<< "nombor dia: "<< dia::getVal()<<"\n"; //output = 5
dgn bahasa mudahnya, namespcae ni memudahkan OOP mcm struct dan class gak...tp namespace xyah object instantiation, jd namespace xyah ada object utk guna namesapce tertentu... "using namespace apa2_saja" pulak adalah untuk kita guna namespace tu tanpa perlu explicitly tulis prefix dgn nama namespace kat dpn...so, kalu cth kat atas tu:
using namespace dia;

cout<< "nombor saya: "<< saya::getVal()<<"\n"; 
cout<< "nombor dia: "<< getVal()<<"\n"; //sumer getVal yg xde prefix kat dpn tu akan otomatik direfer kpd namespace "dia"
jd, "using namespace std" == kita guna sumer namespace dr standard library punya (namespace dlm C++ adalah mengikut hirerchy)...kalau kita letak kat luar body block(mcm global identifier), semua namespace dr standard library akan diperkenalkan kpd semua fucntion scope dlm file tu... kalu taknak guna sumer tp nk guna namespace tertentu shj, cth:string shj dr standard library, kita bole specifickan jd: using namespace std::string berhati2 gak dengan "using" ni sebab takut2 berlaku namespace pollution...cth:
namespace saya{
    int i = 3;
}
int i;
using namespace saya;

int main(){
    i = 10; // <---ambiguous...so, kadangkala, "using" ni menghapuskan tujuan asal penggunaan namespace

contoh tu mmg nmpk mudah sebab kita bole elakkan dengan senang tanpa meng-ambiguoskan "i" tu...

tp kalau kerja secara team atau kita guna 3rd party library, memang tension kalau jd camtu...tu antara sebab x digalakkan pollute namespace kat header file dengan menggunakan "using" directive...kalau nk guna, specifickan dlm scope tertentu saja..

//sila google untuk penerangan lengkap

//ayat berterabur...aku memang fail bab terang-menerang ni :D...

Share this post


Link to post
Share on other sites

Kita akan dianggap biadap bila guna

using namespace std;
string sName;
Terutamanya dalam header file. Kira macam mencarut-carut katakan. Sebab bila orang lain tengok balik kod kita untuk maintenance, orang tu akan mencarut-carut pada original author :lol: Yang terbaik,
// using namespace std;  <----- !@$%^&*((*&^%%$%$#@
std::string sName;

Share this post


Link to post
Share on other sites

namespace ni sejenis abstract container untuk kumpulkan identifier2 supaya x terjadi naming collision...jadi kalau ada nama sama, tak jadi masalah kalau duduk dlm namespace berlainan...cthnya, kalau ada 2 include files yang ada function bernama "getVal", kalau xde namespace, mmg xleh nk guna dlm satu c0de file (C guna naming convention utk mengelakkan mende ni, mmg leceh jdnya...C++ sng sbb ada namespace ni)...cth:

//file1 
namespace saya{
    int getVal(){return 4;};
};

//file2 
namespace dia{
     int getVal(){return 5;};
};

//so kita bole guna: 
#include "file1"
#include "file2"

int main(){
cout<< "nombor saya: "<< saya::getVal()<<"\n"; //output = 4
cout<< "nombor dia: "<< dia::getVal()<<"\n"; //output = 5
dgn bahasa mudahnya, namespcae ni memudahkan OOP mcm struct dan class gak...tp namespace xyah object instantiation, jd namespace xyah ada object utk guna namesapce tertentu... "using namespace apa2_saja" pulak adalah untuk kita guna namespace tu tanpa perlu explicitly tulis prefix dgn nama namespace kat dpn...so, kalu cth kat atas tu:
using namespace dia;

cout<< "nombor saya: "<< saya::getVal()<<"\n"; 
cout<< "nombor dia: "<< getVal()<<"\n"; //sumer getVal yg xde prefix kat dpn tu akan otomatik direfer kpd namespace "dia"
jd, "using namespace std" == kita guna sumer namespace dr standard library punya (namespace dlm C++ adalah mengikut hirerchy)...kalau kita letak kat luar body block(mcm global identifier), semua namespace dr standard library akan diperkenalkan kpd semua fucntion scope dlm file tu... kalu taknak guna sumer tp nk guna namespace tertentu shj, cth:string shj dr standard library, kita bole specifickan jd: using namespace std::string berhati2 gak dengan "using" ni sebab takut2 berlaku namespace pollution...cth:
namespace saya{
    int i = 3;
}
int i;
using namespace saya;

int main(){
    i = 10; // <---ambiguous...so, kadangkala, "using" ni menghapuskan tujuan asal penggunaan namespace

contoh tu mmg nmpk mudah sebab kita bole elakkan dengan senang tanpa meng-ambiguoskan "i" tu...

tp kalau kerja secara team atau kita guna 3rd party library, memang tension kalau jd camtu...tu antara sebab x digalakkan pollute namespace kat header file dengan menggunakan "using" directive...kalau nk guna, specifickan dlm scope tertentu saja..

//sila google untuk penerangan lengkap

//ayat berterabur...aku memang fail bab terang-menerang ni :D...

erm..

tq betik..

tp kite xdela paham sgt p'gunaan using namespace nie..

kalo dlm coding C++ kite xltk tis statement pn ok kan??

bile kite betul2 kena letak tis statement dlm coding kite??

kite ngajar student C++..

tp bab struct xsmp lg..

so mmg agak blur2 when to use tis statement..

cr dlm google..almost every C++ coding ade tis statement..

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

×
×
  • Create New...