카테고리 없음

202208026이종윤 13주차 c프로그래밍 과제

jong133 2024. 11. 26. 12:54

상속에서 부모는 protected로 받고 자식은 public으로 받는다.

출처:https://www.youtube.com/channel/UCM8wseo6DkA-D7yGlCrcrwA

 

Smile Han

 

www.youtube.com

c++에서 가상함수를 구현하는것을 오버라이딩이라고 하고 자식을 우선순위로 한다.

출처:https://www.youtube.com/channel/UCM8wseo6DkA-D7yGlCrcrwA

 

Smile Han

 

www.youtube.com

overloading과 overriding을 비교해서 설명해보자
뤼튼한테 물어보았다.
컴파일할때 실행되나 실행할때 결정되는거냐를 구분하는것을 바인딩이라고 한다. 컴파일시 실행되는 바인딩을 정적바인딩이라고하고, 실행할때 결정되는 바인딩은 동적바인딩이다.

출처:https://www.youtube.com/channel/UCM8wseo6DkA-D7yGlCrcrwA

 

Smile Han

 

www.youtube.com

int y=10;앞에 static을 쓰니 x는 값이 없는데 y는 값이 있다는것이 중요하다.즉 컴파일할때 결정이 되니 early,즉 정적바인딩이다. 그리고 다음스탭에서 int y=10으로 넘어가지 않고 바로 다음걸로 넘어간다.
2011년버전부터 c++이 자료형으로 쉽게 바꿀수있게 변경됬다.

출처:https://www.youtube.com/channel/UCM8wseo6DkA-D7yGlCrcrwA

 

Smile Han

 

www.youtube.com

앞에static이 붙어있는애들을 static멤버변수또는정적멤버변수라고한다. 정적멤버변수는 객체들이 정보를 공유할 목적으로 사용하는 변수이다.

출처:https://www.youtube.com/channel/UCM8wseo6DkA-D7yGlCrcrwA

 

Smile Han

 

www.youtube.com

멤버변수는 객체마다 따로 생성되고 모든 객체가 공유한다.

출처:https://www.youtube.com/channel/UCM8wseo6DkA-D7yGlCrcrwA

 

Smile Han

 

www.youtube.com

멤버변수는하나만 만들어진다. 각각 만들어지는것이 아니라그리고 앞에 static만 붙여준다면 int 머머도 다 스테틱멤버변수가 된다.

출처:https://www.youtube.com/channel/UCM8wseo6DkA-D7yGlCrcrwA

 

Smile Han

 

www.youtube.com

p1,p2,p3에서 ++로 1 2 3으로 됬다가 리턴0값을 받아 다시 p1으로 갈때 --를 받아 p1p2p3 순서대로 -1되서 결과값이 123210이 된다.
15번째줄을 주석처리했더니 굉장히 복잡한 에러가 떴다, 무슨이유일까? 챗 gpt한테 물어본결과 문제 원인 :에러가 발생한 이유는 static 멤버 변수인 count의 정의가 빠졌기 때문입니다. C++에서는 클래스 내에서 static 멤버 변수는 선언만 해도 컴파일러가 자동으로 메모리를 할당하지 않습니다. static 멤버 변수는 클래스 외부에서 정의해야 합니다. 해결 방법 static 멤버 변수는 클래스 선언 내에서 선언만 할 수 있으며, 실제 메모리 할당은 클래스 외부에서 정의해야 합니다. 즉, Point 클래스의 count 변수는 클래스 외부에서 1번만 초기화해야 합니다.
반드시 static멤버변수는 클래스 선언내에서 선언만 외부에서 정의를해야된다.

출처:https://www.youtube.com/channel/UCM8wseo6DkA-D7yGlCrcrwA

 

Smile Han

 

www.youtube.com

부모가 제일앞에 함수이름앞에 virtual이라고 쓰고 자식은 안쓴다. 저렇게 자식이 재정의를하는것을 overriding이라고 한다.

출처:https://www.youtube.com/channel/UCM8wseo6DkA-D7yGlCrcrwA

 

Smile Han

 

www.youtube.com

주로 개발자들은 static_cast 연산자를 많이 사용한다. 11=12이고 static_cast는 컴파일시 타입 변환을 수행한다.
보기는 순수가상함수에대해 잘 설명을 해준 자료다. 어떤 함수에 하나라도 있으면 추상클래스라고한다.

출처:https://www.youtube.com/channel/UCM8wseo6DkA-D7yGlCrcrwA

 

Smile Han

 

www.youtube.com

위소스를 실행시킨 결과이다.
순수가상이라는 shape이라는함수 순수가상함수를 갖는 클래스를 추상클래스라고 얘기한다. 8주석처리를 하고 10번째 순수가상함수를 주석처리해제를하니 에러가 발생했다. 추상클래스는 객체를 만들수 없다. 즉 인스턴스를 못만든다.
그래서 34번째를 주석처리하니 에러가 없어졌다.
순수가상함수는 virtual double area()=0; 자식의 주소를 부모가 받을수있다. 추상클래스라고도 불리며 반드시 재정의 및 객체를 생성할수없다.

출처:https://www.youtube.com/channel/UCM8wseo6DkA-D7yGlCrcrwA

 

Smile Han

 

www.youtube.com

부모에virtual을 달아서 자식이 제대로 재정의될수있었다. 그리고 자식쪽 16번째줄 draw() 뒤에 override를 썼는데 구지안써도된다.c++에서 부모는 virtual 자식은 override

 

위사진은 뤼튼에게 override 키워드 사용법을 java,c++,c#,python,javascript 예를들어 설명을 표로 작성해줘라고 질문한 결과이다.