2011-12-21 3 views
18

가능한 중복 :
What is the difference between a method and a function는, 방법 및 기능의 차이 무엇

내 용어가 정확 얻기 위해 노력하고있어.

C++와 관련하여 메소드와 함수의 차이점은 무엇입니까?

메서드가 아무 것도 반환하지 않고 클래스에서 작업을 수행하기 만합니까? 함수에는 반환 값이 있습니까?

+3

@Ash Burlaczenko 나는 그 질문이 C++에만 국한된 것이 아니기 때문에 그 질문과 중복되는 것이라고 생각하지 않습니다. –

+0

동의합니다. 중복이 아닙니다. 사실 나는 더 나은 질문이라고 생각합니다. 범위가 더 잘 정의 되었기 때문입니다. – joaerl

답변

35

C++ 표준에 관한 한 "메소드"는 없습니다. 이 용어는 클래스의 멤버 함수를 나타 내기 위해 다른 OO 언어 (예 : Java)에서 사용됩니다.

일반적으로 "메서드"와 "함수"를 대체로 사용하지만 대부분의 사람들은 "메서드"를 멤버 함수 ("자유 함수" 어떤 클래스의 멤버가 아닌).

+2

OP는 C++ 표준과 전혀 관련이없는 것 같습니다. 98 개가 아니고 03 개가 아니라 11 개가 아닌. 그는 정확한 용어에만 관심이 있습니다. –

+4

그리고 올바른 용어는 "방법"이 아니라 회원 기능입니다. –

+9

@CaptainGiraffe : 귀하의 요지를 이해합니다. 그러나 표준에있는 것 이외의 "올바른 용어"는 없습니다. 다른 것은 그저 임시 방편 일뿐입니다. –

1

메서드는 클래스의 멤버 함수이지만 C++에서는 메서드 (Java와 같은 다른 언어에서 온 일부 프로그래머는 메서드라고 함)보다 멤버 함수라고합니다.

함수는 대개 클래스의 멤버가 아닌 자유 함수를 의미합니다.

구성원 함수가 함수 인 동안 함수는 반드시 멤버 함수 일 필요는 없습니다.

예 :

void blah() { } // function 

class A { 
    void blah() { } // member function (what would be a "method" in other languages) 
}; 

blah(); // free functions (non-member functions) can be called like this 

A ainst; 
ainst.blah(); // member functions require an instance to invoke them on 
9

미안하지만 이건 내 제일 싫어 하는게 중 하나입니다. 메소드는 일반적인 OO 유형 용어입니다. 메서드는 C++에 존재하지 않습니다. C++ 표준을 열면 "메소드"에 대한 언급이 없습니다. C++은 다양한 맛의 함수를 가지고 있습니다.

+4

적절한 용어를 위해 우리는 표준을 연구합니다. Stroustrup의 책을보세요. 그는 항상 메서드가 아니라 멤버 함수라고 부릅니다. –

1

메서드도 반환 값을 가질 수 있습니다.

메소드는 클래스의 함수입니다. 예를 들어 "car"클래스에는 "accelerate"메소드가 있습니다.

+0

C++은이 구별을하지 않습니다. –

0

"메서드"라는 용어는 C++에서 사용되지 않고 멤버 함수입니다.

절차과 기능 사이의 차이점에 대해 생각해 본다면 C++의 차이점은 없습니다. 파스칼은 그 구별을위한 마지막 언어였습니다. (ADA는 나중에 만들어졌고 절차라는 용어를 사용했습니다. Brian Neal에게 감사드립니다.)

무효로 선언 된 모든 기능은 이전 어휘의 절차가됩니다.

멤버 함수는 복잡한 짐승이며, 함수는 간단한 함수입니다.

멤버 함수

  • 개인 될 수있는 클래스의 멤버
  • 보호 될 수
  • 수있는 가상 될 수 전용 될 수있다 순수 가상이다.
+3

C++은 이러한 구분을하지 않습니다. –

+0

@ 무슨 구별? –

+0

"방법"과 "기능"사이. –