2010-02-19 3 views

답변

6
  1. 데이터 형식 앞에 *가 있으면 변수가 데이터 형식에 대한 포인터 (이 경우 노드에 대한 포인터)라고 표시됩니다. 메서드에 전체 "노드"의 복사본을 전달하는 대신 메모리 주소 또는 포인터가 대신 전달됩니다. 자세한 내용은 Pointers in this C++ Tutorial을 참조하십시오.

  2. 메소드 이름 앞에있는 클래스 이름은 CAStar 클래스의 메소드를 정의하도록 지정합니다. 자세한 내용은 Tutorial pages for Classes을 참조하십시오.

+2

또한 함수 이름의 모호성을 제거하는 방법으로 생각할 수도 있습니다. 예를 들어 두 개의 클래스가 있다고 가정합니다 (간단한 예). 하나는 분수 (분수)를 구현하고 다른 하나는 정수 (정수)를 구현합니다. 두 클래스 모두 "add"라는 함수를 가질 수 있습니다. Fraction 클래스를 포함하면 컴파일러는 Integer 클래스가 아닌 Fraction 클래스에 대해 add 함수를 구현하고 있음을 알게됩니다. –

+0

Nicely said, Ryan –

3

* 그것이 pointer 것을 의미합니다. _asNode *node_asNode* node과 같습니다.

메서드가 class { ... } 내부에 정의되어 있지 않으면 클래스 이름이 메서드 이름 앞에 있습니다. ::scope operator입니다.

2

일반적으로 프로그래밍을 처음 사용하거나 C++을 처음 사용하십니까? 프로그래밍에 익숙하지 않은 경우 몇 가지 수업을 듣기를 원할 것입니다. C++을 처음 사용하는 사람이라면 Practical C++ Programming을 온라인 C++ Primer으로 읽어보십시오. 특정 질문에 대해서는

는 : 변수 선언에 별표 (*)는 "이 포인터입니다"의미

 
int * pointer; 

이 또한 커버 변수가 당신의 예에서와 같이 선언 된 함수 선언/프로토 타입.

선언 후에 별표는 포인터를 참조 해제한다는 의미입니다. 즉, 가리키는 위치의 가치를 얻게됩니다.

 
printf("memory address:%d value:%d", pointer, *pointer); 

메모리 주소가 인쇄 될 때 프로그램의 상태에 따라 예기치 않게 변경된다는 점에 유의하십시오. 간단한 프로그램에서는 변경 내용을 볼 수 없지만 복잡한 프로그램에서는 변경 내용을 볼 수 있습니다.

+0

저는 C++을 처음 사용합니다. 나는 주로 php, as3 및 C#에서 작업을 수행했습니다. 하지만 결코 C++에서는. 그러나 이러한 응답을 듣고 나는 C++이 다르다는 것을 알고 있습니다. 클래스 외부의 메소드 선언과 같습니다. 하지만 정보 주셔서 감사합니다. – numerical25