Inflearn Community Q&A
정적멤버함수 강의 중 질문있습니다.
Written on
·
304
0
#include<iostream>
using namespace std;
class something
{
public:
int m_value=6 ;
};
int main()
{
something st1;
something st2;
m_value->something;
cout << &something::m_value << " " << something::m_value << endl;
st1.m_value = 2;
cout << &st1.m_value << " " << st1.m_value << endl;
cout << &st2.m_value << " " << st2.m_value << endl;
return 0;
}
something::m_value가 비정적 멤버 참조는 특정 개체에 상대적이어야 합니다. 오류가 나와 네이버에 찾아보니다른 클래스를 호출할 때 인스턴스 생성 없이 호출해서 나는 오류다음과 같이 인스턴스 생성 후 호출해야 해결됨. 이라고 하여 m_value->something;로 인스턴트 생성해줬는데도 빨간줄 나오는데 혹시 왜이러는지 알 수 있을까요?
#include<iostream>
using namespace std;
class something
{
public:
static int m_value ;
};
int something::m_value = 6;
int main()
{
something st1;
something st2;
st1.m_value = 2;
cout << &st1.m_value << " " << st1.m_value << endl;
cout << &st2.m_value << " " << st2.m_value << endl;
return 0;
}
또 static으로 선언시 st1.m_value,st2.m_value가 같은값이 나오는이유가 정적메모리이기 떄문인가요?
Answer 1
0
1번 질문에서 something은 클래스 이름이지요. instance 이름이 아닙니다. something s1, s2; 라고 클래스 something의 instance 두개 s1과 s2를 선언하실 수 있습니다. s1.m_value, s2.m_value가 "특정 개체에 상대적인 비정적 멤버"입니다. 어려운 용어와 표현에도 주눅들지 않고 파고 들고 계시네요.
2번 질문은 정적 메모리라서 같은 값이 나오는게 맞는데, 강의에서 같은 예제를 보여드린 기억이 납니다. 예제 내용을 다시 질문하시는 것은 문제가 되지 않으나 제가 걱정하는 것은 강의 내용이 분명하지 않거나 뭔가 빠졌거나 하는 상황입니다. 혹시 개선점이 있다면 의견 부탁드립니다.





