C_C++2 [C/C++] Volatile volatile의 필요성/* 작성 코드 */u32 *ptr = (u32 *) 0xE0000300;*ptr = 0x1234;*ptr = *ptr & 0xFF; /* 컴파일러에 의한 최적화 */u32 *ptr = (u32 *) 0xE0000300;*ptr = 0x1234 & 0xFF;상기 예제의 경우 Compiler는 최적화를 위해 *ptr = 0x1234; 를 건너뛰고 맨 마지막 코드처럼 *ptr = 0x1234 & 0xFF; 으로 실행 But, 메모리 주소에 연결된 H/W 레지스터에 값을 쓰는 프로그램의 경우 각각의 write 동작이 H/W에 특정 명령을 전달하는 것이므로, 주소가 같다는 이유만으로 중복되는 write명령을 축약해 최적화 해버리면 H/W가 오동작 이러한 이유에 의해 volitile 키워.. 2024. 8. 9. [C++] 가상함수(Virtual function)와 다형성 이 페이지는 상속(Inheritance)에 대하여 어느 정도 사전지식이 있다고 생각하고 서술하였습니다. C++의 객채지향프로그래밍의 가장 중 큰 특징 중 하나인 가상함수와 다형성에 대하여 알아볼 것이다. 가상함수(Virtual Function)이란 자식클래스에서 이미 정의되어 있는 부모클래스의 멤버함수를 오버라이딩(재정의)한 멤버함수를 의미한다. 먼저 코드를 통해 가상함수의 기본적인 개념인 '오버라이딩'에 대해 알아보자#include #include using namespace std;class Parent { public: void WhoIam() { cout WhoIam(); // delete p1; Child *c1 = new Child(); c1.. 2024. 8. 9. 이전 1 다음 728x90