본문 바로가기
IT/programming

[C/C++] 전역 네임스페이스, 시스템 함수와 동일한 클래스 메서드 이름 사용 방법

by 어느해겨울 2022. 1. 14.

전역 네임스페이스, 시스템함수와 동일한 클래스 메서드 이름 사용 방법

 

C++ class method명이 시스템 함수와 같은 경우에는 사용할 시스템 함수명 앞에 :: 을 붙여주자.

이는 전역 네임스페이스 란 의미인데,

식별자가 명시적 네임스페이스에서 선언되지 않은 경우 암시적 전역 네임스페이스에 포함되기 때문이다.

이렇게해서 되면 동일한 이름과 해당 식별자(동일한 method명과 시스템 함수)가 구분을 할 수 있다.

 

예제 

void Handler::write(string _data) {	// method - write()
    ::write(this->dev_fd, _cmd_id.c_str(), _data.length());	// system function - write()
    
    return ;
}

void Handler::execute(void) {
	string str_data = "hello world";
   	
    // 1. 동일 네임스페이스 내 write method 호출
    this->write(str_data);
	
    // 2. 전역 네임스페이스 내 write function 호출
	::write(this->dev_fd, _cmd_id.c_str(), _data.length());

	return ;
}

 

끝.

 

 

댓글