2014-11-20 1 views
2
Rectangle rect, rectb; 
rect.set_values (3,4); 
rectb.set_values (5,6); 
rect.area(); 
rectb.area(); 

rect.area()를 호출해도 rectb.area() 호출과 동일한 결과를 얻지 못합니다. 이는 Rectangle 클래스의 각 객체가 width 및 height라는 자체 변수를 가지기 때문입니다. 즉, 객체 자체의 멤버 변수에서 작동하는 자체 함수 멤버 set_value 및 영역을 가지기 때문입니다.개체에 다른 기능 멤버가 있거나 공유 할 수 있습니까?

-in some way-는 무엇을 의미합니까? 함수 멤버가 클래스의 개체간에 공유된다는 것을 의미합니까?

답변

1

-in some way-는 무엇을 의미합니까? 함수 멤버가 클래스의 객체간에 공유된다는 것을 의미합니까?

예. 와

은 "어떤 방법으로"저자는 아마도 데이터 (멤버 변수)이없는 상태에서 코드가 공유되어 있는지에 대해 설명 할 예정이다. 멤버 변수는 각 개체마다 고유하며 메서드는 첫 번째 매개 변수 (각 메서드의 매개 변수 목록에 속하지 않지만 포인터 내에서 this 포인터를 통해 암시 적으로 액세스 할 수 있음)로 개체 데이터에 대한 포인터를 가져옵니다. 이 포인터를 통해 동일한 (공유 된) 코드가 다른 데이터 (동일한 클래스의 다른 인스턴스)에서 작동 할 수 있습니다.

매개 변수가 selfPython과 같은 다른 언어는 각 멤버 함수에 대한 매개 변수를 명시 적으로 정의해야합니다.

+0

이제 "이"작동 방식을 이해합니다. 고마워요! – afgphoenix

1

예, 클래스의 함수 코드는 해당 클래스의 개체 수에 관계없이 메모리에 한 번만로드됩니다. 따라서, 함수 멤버는 클래스의 객체간에 공유됩니다. (아마도이 ​​책/사이트의 진술이 더 잘 표현되었을 수 있습니다.)

rect.set_values (3, 4) 또는 rectb.set_values (5, 6)을 호출해도 관계없이 결과가 다를 수 있지만 메모리에서 실행되는 코드는 다릅니다 (수신 된 매개 변수 및/또는 데이터 멤버 값).

관련 문제