int y=10;앞에 static을 쓰니 x는 값이 없는데 y는 값이 있다는것이 중요하다.즉 컴파일할때 결정이 되니 early,즉 정적바인딩이다. 그리고 다음스탭에서 int y=10으로 넘어가지 않고 바로 다음걸로 넘어간다.2011년버전부터 c++이 자료형으로 쉽게 바꿀수있게 변경됬다.
p1,p2,p3에서 ++로 1 2 3으로 됬다가 리턴0값을 받아 다시 p1으로 갈때 --를 받아 p1p2p3 순서대로 -1되서 결과값이 123210이 된다.15번째줄을 주석처리했더니 굉장히 복잡한 에러가 떴다, 무슨이유일까? 챗 gpt한테 물어본결과
문제 원인 :에러가 발생한 이유는 static 멤버 변수인 count의 정의가 빠졌기 때문입니다. C++에서는 클래스 내에서 static 멤버 변수는 선언만 해도 컴파일러가 자동으로 메모리를 할당하지 않습니다. static 멤버 변수는 클래스 외부에서 정의해야 합니다. 해결 방법 static 멤버 변수는 클래스 선언 내에서 선언만 할 수 있으며, 실제 메모리 할당은 클래스 외부에서 정의해야 합니다. 즉, Point 클래스의 count 변수는 클래스 외부에서 1번만 초기화해야 합니다.반드시 static멤버변수는 클래스 선언내에서 선언만 외부에서 정의를해야된다.
위소스를 실행시킨 결과이다.순수가상이라는 shape이라는함수 순수가상함수를 갖는 클래스를 추상클래스라고 얘기한다.
8주석처리를 하고 10번째 순수가상함수를 주석처리해제를하니 에러가 발생했다. 추상클래스는 객체를 만들수 없다. 즉 인스턴스를 못만든다.그래서 34번째를 주석처리하니 에러가 없어졌다.순수가상함수는 virtual double area()=0; 자식의 주소를 부모가 받을수있다. 추상클래스라고도 불리며 반드시 재정의 및 객체를 생성할수없다.