소개
게시글
고민있어요
2022.05.23 20:17
어우 가끔 말씀이 너무 빠르십니다.
- 0
- 1
- 219
질문&답변
2020.06.17
11:49 경에
즉, 강사님의 의도는 멤버함수는 하나가 정의되어 있고 그것에 인스턴스의 주소를 전달하여 사용한다. -> 그 예로 함수포인터 사용 시 (instance.*fptr1)() 처럼 인스턴스의 주소를 전달해줘야한다. -> static으로 정적함수를 만들면 각 인스턴스의 주소를 전달해 주지 않아도 된다. -> 그 예로 (*fptr2)() 처럼 instance의 주소를 전달해주지 않는 형태(일반함수의 함수포인터)로 사용이 가능하다. 라고 저는 이해했습니다. 복잡한 만큼 제가 이해한 것을 풀어서 적어보았으며 저도 학습자인만큼 확신이 없으므로 맹신하지 않아주셨으면 합니다 ㅠ
- 2
- 5
- 273
질문&답변
2020.06.17
11:49 경에
찾아본 바, c에서는 밑의 경우 처럼 * 없이 사용이 가능했지만, c++일 경우 s1.fptr() 로 사용하였을 시 멤버함수를 호출하겠다는 의미가 되어 오류가 발생한다고 합니다. 그렇기 때문에 *를 생략하지 않고 붙여준다는군요. 즉, 밑의 경우 fptr2() 의 경우가 특별한 경우이며 편의를 위해 생략된 것이었습니다. 함수포인터 그대로 (*fptr2)() 인 것을 편의를 위해 생략한 것이었네요(static이기 때문에 인스턴스의 주소를 전달하지 않으므로 가능).
- 2
- 5
- 273
질문&답변
2020.06.17
11:49 경에
질문자님의 질문 의도는 '연결'이라는 의미는 알지만 *의 역할을 궁금해 하시는 것 같네요. 밑의 경우는 *를 쓰지않았으니까요. .*이 연결이라고 정해져 있다면 어쩔 수 없는 경우지만요. 물론 저도 몰라서 질문 뒤적뒤적 보고 있는 처지구요 ㅠㅠ
- 2
- 5
- 273
질문&답변
2020.06.17
static 멤버변수에서 인스턴스에서 값을 변경하면 멤버변수가 인스턴스에 끼치는 영향
동적으로 인스턴스 생성 시 변수를 생성하는 것이 아니라, static일 경우 정적으로 변수를 생성하게 해주는 기능을 하기 때문인 것 같습니다. 제가 이해한 대로 예를 들자면, class 주민등록증 { static string 발급국가; string 주민등록번호; } string 주민등록증 ::발급국가 = "대한민국"; 이렇게 있을 때 주민등록증 인스턴스를 만들 때 마다 발급국가 멤버변수를 동적으로 생성하는 것이 아니라, 발급국가를 static으로 정적변수화 시켜 하나의 변수로 다루겠다는 의미라고 생각합니다.
- 1
- 3
- 349