C++에서는 어떤 클래스에도 속하지 않는 '글로벌 함수'를 가질 수 있습니다. OOP의 기본 원칙을 위반하는 것이 아닌지 궁금합니다.C++ 전역 함수 및 OOP?
클래스에서 정적 인 전역 함수 또는 함수를 사용하면 어떤 차이가 있습니까? 나는 후자가 더 OOP 지향적이라고 생각하고 있습니다. 그러나 나는 틀릴 수도 있습니다 ...
멀티 스레드 응용 프로그램을 작성할 때 더 어렵지 않습니까?
C++에서는 어떤 클래스에도 속하지 않는 '글로벌 함수'를 가질 수 있습니다. OOP의 기본 원칙을 위반하는 것이 아닌지 궁금합니다.C++ 전역 함수 및 OOP?
클래스에서 정적 인 전역 함수 또는 함수를 사용하면 어떤 차이가 있습니까? 나는 후자가 더 OOP 지향적이라고 생각하고 있습니다. 그러나 나는 틀릴 수도 있습니다 ...
멀티 스레드 응용 프로그램을 작성할 때 더 어렵지 않습니까?
클래스 내부의 정적 함수는 모듈 내부의 전역 함수로 나타납니다. 것은 JAVA에서, 당신은 선택의 여지가 없다.
C++에서는 전역 함수를 네임 스페이스 내에 캡슐화 할 수 있지만 더미 클래스는 필요하지 않습니다. 이렇게하면 모듈성이 생깁니다.
물론 전역 함수가있는 방식으로 네임 스페이스 외부에 함수를 넣을 수 있습니다. 하지만 정적 함수가 많은 자바 싱크대와 크게 다르지 않습니다. 또한 나쁜 코드이지만 작은 프로젝트에서는 괜찮을 것입니다.
또한 C++에서는 연산자 함수로 실제로 클래스에 링크 된 "전역"함수를 선택할 수 있습니다. 한 클래스의 인스턴스 친구.
편집 멀티 스레딩의 경우 함수가 아니라 전역 변수에 대해 걱정해야합니다.
+1은'namespace' 옵션을 언급합니다. – xtofl
C++은 많은 프로그래밍 패러다임 (구조화, OOP, 기능)을 용이하게합니다.
소형 (hello world-style) 프로그램의 OO 접근 방식을 선택하는 것은 의미가 없습니다.
모듈 식 프로그램에 구조화 된 방법을 사용하는 것은 의미가 없습니다.
다음으로 정적 클래스 함수는 '자유'함수보다 훨씬 잘 구성되어 있습니다. 그것의 꼭대기에, 그들은 더 나은 캡슐화라는 객체의 사적인 변수에 접근 할 수 있습니다.
동의합니다. C++은 최상의 선택을 자유롭게 제공합니다. 우선 프로그래밍 언어는 가능한 한 효율적으로 문제를 해결하는 데 도움이되어야한다고 생각합니다. – pcent
정적 메서드는 해당 클래스의 private static
필드에 액세스 할 수 있지만 전역 함수와 유일한 차이점입니다.
C++은 대략 C의 상위 집합이고 C에는 전역 함수가 있기 때문에 전역 함수가 있습니다. C는 OOP 프로그래밍과 비 OOP 프로그래밍 모두에 사용할 수 있습니다.
std::Math::max
또는 std::max
을 입력해도 솔직히 차이가 있습니까?
다른 답변과 완전히 일치하고 나의 조언을 추가하고 싶습니다. 정적 함수와 정적 메서드는 거의 동일한 것들이며이를 악용하면 잘못된 디자인이 될 수 있습니다. 유지하려는 경우 개체 모델은 정적 함수/방법 경우에만 사용해야 청소 :
가 객체의 상태에 따라 결과를 생성하지 않는+1 : 좋은 조언 – neuro
당신이 찾고있는 단어는 stateless입니다;) –
글로벌 기능이 멀티 스레딩과 관련이있는 이유는 무엇입니까? –
...OOP로 모든 것을 해결하려고 시도하면 TMTOWTDI 원칙을 위반합니다 ;-) – fredoverflow