더 많은 노련한 C++ 코더들에게는 어리석은 질문처럼 보일지 모르지만, 일단 클래스를 만들고 그 클래스의 객체를 만들면, 당신이 만든 객체를 사용하여 그 클래스의 public 메소드를 호출한다고합니다. 정적 메서드입니다.이 경우 객체 또는 클래스 이름 자체를 사용하여 호출 할 수 있습니다.)개체를 사용하지 않고 클래스 메서드를 호출합니까?
그러면 왜 작동합니까?
기능 정의 :
template <typename Object>
void printList(const List<Object>& theList) {
if (theList.isEmpty())
cout << "Empty list!" << endl;
else {
ListItr<Object> itr = theList.first();
for(; !itr.isPastEnd(); itr.advance())
cout << itr.retrieve() << " ";
}
cout << endl;
}
함수 호출 :
printList(myList);
내가 여기서 무엇을 놓치고? printList()
이라는 객체를 List<int>
이라고 부르지 않는 한 나머지 프로그램은 이 클래스 List<int>
에 속한다는 것을 어떻게 알 수 있습니까?
이 방법도 효과가 있습니다. 방금 확인했습니다. 나는이 기능을 호출하고 정의하는 방법을 사용했을 것이다. 이번에는 함수가 this
포인터를 사용하여 정의되었다는 점을 유의하십시오.
기능 정의 :
template <typename Object>
void List<Object>::printList() {
if(this->isEmpty())
cout << "Empty list!" << endl;
else {
ListItr<Object> itr = this->first();
for(; !itr.isPastEnd(); itr.advance())
cout << itr.retrieve() << " ";
}
cout << endl;
}
함수 호출 :
myList.printList();
'나머지 프로그램에서는 printList()가 List'클래스에 속해 있다는 것을 어떻게 알 수 있습니까? 'List '을 매개 변수로 사용하는 이유는 무엇입니까? 나에게 당신이 멤버 함수가 아닌 자유 함수를 만든 것처럼 보입니다 ... 특히 두 번째 예제에서 멤버 함수를 만들 때,이 함수를 수행하는'List
왜냐하면 그것은 클래스의 메소드가 아니기 때문입니다. 그것은 단순한 기능입니다. –
고마워요. 저는 그것을 고치고 첫 번째 것을 멤버 함수로 만들었습니다. 이제는 호출 할 수있는 객체가 필요합니다. 여전히 'this'를 사용하여 동일한 작업을 수행 할 수있을 때 매개 변수로 전달 된 객체가 필요한 이유가 이상하게 보입니다. – Ambidextrous