인프런 커뮤니티 질문&답변
정적멤버함수 강의 듣다가 궁금한점이 있어 질문드립니다.
작성
·
185
1
#include<iostream>
using namespace std;
class something
{
private:
static int s_value;
int m_value;
public:
static int getvalue()
{
return s_value;
}
int temp()
{
return this->s_value;
}
};
int something::s_value = 1024;
int main()
{
cout << something::getvalue() << endl;
something s1, s2;
cout << s1.getvalue() << endl;
int(something::*fptr1)() = &something::temp;
cout << &fptr1 << endl;
cout << *&fptr1 << endl;
cout << &something::temp << endl;
cout << (s2.*fptr1)() << endl;
}
볼드체 중 cout << &something::temp << endl; 결과 값이 1이 나오는데 &는 주소연산자니 주소가 나와야 하지 않나요?
답변 1
1
cout이 함수의 주소를 제대로 출력해주지 않은 것 같습니다. bool로 변환한다는 얘기가 있네요.
https://stackoverflow.com/questions/2064692/how-to-print-function-pointers-with-cout
아래와 같이 printf를 이용해서 출력 형식을 프로그래머가 지정해주면 주소를 확인하실 수 있습니다.
printf("Function address = %p\n", &something::temp);
C강의에서는 자세히 여러 번 다루는 내용인데 C++강의는 C++ 문법만으로도 50시간 분량이어서 아무래도 이런것들까지는 다루질 못했습니다. C++로 입문하셨다면 소소한 내용들은 보충하면서 공부해나가시면 더 도움이 될것 같습니다.





