using
키워드가 필요할 때 실제로 이해가되지 않습니다. 기본 클래스의 함수 나 객체를 사용하려면 항상 필요합니까? 나는 함수를 오버로딩하지 않을 때에도 사용해야한다고 본다.기본 클래스의 기본 동작에`using` 키워드가 사용되었습니다
답변
using
을 클래스에 사용해야하는 경우는 두 가지입니다. 첫 번째는 기본 클래스에서와 같은 이름으로 클래스의 함수를 정의 할 때 두 함수 모두를 고려하여 오버로드를 사용하려는 경우입니다. 다른 하나는 기본 클래스 생성자를 파생 생성자로 사용하려는 경우입니다. 당신이 기본 클래스를 볼 수 과부하 만들고 싶어 파생 클래스 에서 해당 이름을 과부하 때
기본 클래스가 템플릿 인 경우이 규칙과 다른 점이 있습니까? – Plamen
@Plamen, 왜 기본 클래스에 대한 템플릿을 가지고 어떤 차이가 있는지 알 수는 없지만 확실히 말할 수는 없습니다. –
답변 해 주셔서 감사합니다. 내가 템플릿을 사용하면 그것이 효과가 있다고 생각합니다. 몇 가지 테스트를 실행 해봤는데 컴파일러가 템플릿 매개 변수를 사용할 때 수행 할 작업을 결정할 수없는 것 같습니다. 베이스에'stupid' 함수가 있는데'error : 템플릿 매개 변수에 의존하는 'stupid'에 대한 인수가 없기 때문에 'stupid'선언을 사용할 수 있어야합니다 [-fpermissive]' 파생 된 (다시 선언되지 않고 방금 사용되었습니다). – Plamen
는 당신은 기본 클래스 멤버에 대한 using
-directive이 필요합니다. detached 클래스에서 이름을 오버로드하지 않으면 using
-directive가 전혀 필요하지 않습니다.
기본 클래스가 변경되어 함수 오버로드가 발생하는 경우 놀라 울 정도로 고려한 배경입니다. 따라서 기본 클래스의 오버로드는 기본적으로 숨겨져 있습니다. 그것들을 사용하기를 원한다면, 당신은 explusit 변경을하고 있습니다.
은의 그 규칙이 자리에없는 가정object.f(0)
호출되는 멤버
f(double)
을 정의하는 파생 클래스를 생각해 보자. 기본 클래스가
f(int)
을 제공하도록 변경되고 오버로드가 표시되면 새 함수가 더 잘 일치합니다. 즉, 행동이 조용히 변경되기 전에 눈에 보이지 않고. 그것은 아마 나쁜 생각 일 것입니다.
네임 스페이스를 다루는 경우 사용해야합니다. 당신이 네임 스페이스에있는 일부 라이브러리를 사용할 수 있습니다
using namespace std;
using std::cout;
using std::endl;
// without that you have to type it in following way
std::cout << std::endl;
// which is not the best way if you use it very often,
// but good if you want to use some names in your code
예를 들면 다음과 같습니다. 변수, 클래스 및 메서드를 잠그기 위해 만들어졌습니다. 그렇지 않으면 네임 스페이스가 더 많이 필요하고 프로젝트에서 일부 이름을 사용하지 못하게됩니다.
OP의 질문에 [네임 스페이스와 아무 관련이 없습니다.] (http://en.cppreference.com/w/cpp/language/using_declaration) – Mgetz
- 1. 기본 클래스의 기본 이터레이터 설계
- 2. 기본 클래스의 추상 기본 변수
- 3. 기본 클래스의 ButtonClick 처리
- 4. 기본 클래스의 모든 오버로드 사용
- 5. 기본 클래스의 기본 생성자에 대한 액세스 금지
- 6. 추상 기본 클래스의 기본 생성자를 정의하십시오.
- 7. 기본 클래스의 배열에 대한 C++ - 기본 오류
- 8. 가상 기본 클래스의 기본 생성자를 사용하지 마십시오
- 9. 모든 동작에 기본 렌더링을 설정하는 방법
- 10. Java의 기본 리스너 동작에 문제가 있습니다.
- 11. 레일스 기본 동작에 라우팅 매개 변수가 없습니다.
- 12. 기본 클래스의 비 가상 함수에서 기본 클래스의 가상 함수 호출
- 13. "기본"클래스의 연산자 오버로드
- 14. 기본 클래스의 초기화 프로그램
- 15. 기본 클래스의 AddressOf
- 16. S3 클래스의 기본 요소
- 17. 파생 클래스의 기본 포인터
- 18. Gson에서 클래스의 기본 구현
- 19. 기본 클래스의 이벤트
- 20. 기본 클래스의 Profile.GetProfile()
- 21. 스트림 클래스의 기본 클래스
- 22. 기본 클래스의 상수 변수
- 23. 기본 클래스의 런타임 결정
- 24. C# 클래스의 기본 메서드
- 25. 기본 클래스의 상속
- 26. 기본 클래스의 C++ 메서드
- 27. "using"(typedef) 포인터 : 기본 생성자 return nullptr?
- 28. 기본 및 파생 클래스의 생성자
- 29. 기본 클래스의 파생 클래스 인스턴스
- 30. 추상 기본 클래스의 모호한 상속 :
네임 스페이스에 대해 알아야합니다. – SLaks
@SLaks OP 질문에 [네임 스페이스와 아무 관계가 없습니다.] (http://en.cppreference.com/w/cpp/language/using_declaration) – Mgetz