반응형

Programming Tools 55

[코드 중심 C++] - Polymorphism(다형성), 추상 클래스(Abstract Class), virtual, 순수 가상 함수(Pure Virtual Function)

1 여러 개의 서로 다른 객체가 동일한 기능을 서로 다른 방법으로 처리할 수 있는 기능을 다형성이라고한다. 예를 들면 필기구 역할을 하는 다양한 도구들 - 볼펜, 만년필, 연필- 은 서로다른 객체지만, 문서 작성이라는 동일한 기능을 수행한다. 간단히 말하면, 같은 클래스에서 나온 서로다른 객체가, 같은 메소드 호출에 대해서 서로 다른 출력을 내놓는다는 얘기다. 그런데 메소드는 기본적으로 단 하나의 메모리에서 모든 객체가 공유하게되는데, 이게 어떻게 가능한가? 그래서 우린 추상 클래스와 가상함수의 개념을 사용한다. 객체 포인터 자료형의 변수로 포인터에 접근할 때에는 아래와같은 문제가 발생할 가능성이 높다. (& 자료형으로 정의해도 마찬가지다.) 아래의 예시의 경우, C++ 컴파일러는 가리키고 있는 변수의 ..

Markdown 사용법 정리

1. Heading '#' 기호를 이용해서 제목을 작성한다. 총 여섯개의 #을 허용한다. # Heading ## Heading ### Heading #### Heading ##### Heading ###### HeadingHeading Heading Heading Heading Heading Heading 2. Line '-'을 다섯번 치면 구분선이 생긴다. ----- 3. text 효과 **word**word *word*word ~~word~~word >word word * apple * pear - apple - pear 1. apple 1-1. applemango 2. pear apple pear apple pear apple 1-1. applemango pear 4. ..

[코드 중심 C++] - 접근제한자 private, protected, public, Friend 키워드, Static 키워드

1 클래스와 구조체의 근본적인 차이가 무엇일까. 은닉 기능의 차이다. C++의 접근제한자 3가지 private, protected, public이 있다. private로 선언하면 클래스 내부의 멤버 함수 또는 friend 함수만 클래스의 private 멤버에 접근할 수 있다. protected로 선언하면 클래스 외부에서는 protected 멤버에 접근할 수 없다. 해당 클래스의 하위 클래스(상속)에서는 접근할 수 있다. public으로 선언된 데이터 멤버와 메서드는 다른 클래스에서도 접근이 가능하다. public 멤버는 . 연산자를 사용하여 접근한다. 2 friend 키워드를 통해 특정한 객체의 모든 멤버에 접근할 수 있다. friend를 통해서 함수를 작성하면 그 함수는 클래스의 메서드로 인식되지 않는..

[코드 중심 C++] - 멤버 이니셜라이저 컴파일 에러 문제 (Member Initializer)

knowledgeforengineers.tistory.com/75 [코드 중심 C++] - 상속, 멤버 이니셜라이저(Inheretence, Member Initializer) 1 클래스를 상속시키려면 상속받을 클래스의 이름 옆에 :와 접근 제한자, 클래스의 이름을 붙여주면 된다. 2 생성자 : 부모 먼저 자식 나중 소멸자 : 자식 먼저 부모 나중 3 멤버 이니셜라이저( knowledgeforengineers.tistory.com 전에 올린 포스팅에 추가 설명을 하고자 한다. Student 생성자를 아래와 같이 적었을 때 왜 컴파일 에러가 발생할까? // Case1 Student(int studentID, string name){ this->name = name; this->studentID = stude..

[코드 중심 C++] - 상속, 멤버 이니셜라이저(Inheretence, Member Initializer)

1 클래스를 상속시키려면 상속받을 클래스의 이름 옆에 :와 접근 제한자, 클래스의 이름을 붙여주면 된다. 2 생성자 : 부모 먼저 자식 나중 소멸자 : 자식 먼저 부모 나중 3 멤버 이니셜라이저(Member Initializer)는, 부모 클래스의 멤버 변수를 초기화, 클래스 내의 변수를 초기화, const 변수를 초기화 등의 상황에서 사용한다. 멤버 이니셜라이저는 생성자의 몸체 부분보다 먼저 실행된다. 4 private는 외부에서 접근이 불가능 protected는 외부에서 접근이 불가능하나 파생 클래스에서는 접근이 가능 public는 어디서나 접근이 가능하다. 상속을 private하게 하면, 부모 클래스의 멤버 중 private 제한자보다 접근 범위가 넓은 멤버는 모두 private으로 접근 범위가 바..

[코드 중심 C++] 생성자, 참조변수형, 소멸자 (Constructor, Reference Variable, Destructor)

1 생성자는 객체 생성과 동시에 attribute를 초기화할 수 있게 하는 기능이다. 클래스의 이름과 동일한 이름의 method로 존재한다. 생성자는 반환값이 없다. 생성자는 여러번 정의 가능하여, 다양한 방법으로 객체 초기화를 시도할 수 있다. #include #include using namespace std; class Character { private: string name; int ragePoint; int hp; int damage; public: Character(string name, int hp, int damage) {//initialization. 생성자는 자료형이 없다. this->name = name; this->ragePoint = 0; this->hp = hp; this->d..

어셈블리어 정리노트 2

INTEL 문법 기준이다. 어셈블리어 명령 구조 opcode operand opcode가 연산자 operand가 피연산자 범용레지스터 EAX, EBX, ECX, EDX, ESP, EBP, ESI, EDI 등의 4바이트=32비트 레지스터 공간이다. EAX 12345678 이면, AX 5678 AH 56 AL 78 MOV 연산자 mov eax, 1 //1을 eax로 대입 mov eax, ebx //ebx을 eax로 대입 MOV REG REG 인경우(피연산자가 모두 레지스터인 경우), 양쪽의 크기가 같아야한다. 어셈블리어는 크기 조절에 관한 명령어가 없다. 하나의 주소에 1바이트=8비트 크기의 메모리가 할당되어있다. 주소지정은 다음과 같이 [address] 형태로 ex ) [4002000] 그 한 바이트만 지..

어셈블리어 정리노트 1

참고자료 www.youtube.com/watch?v=yf7yFJHTif8 www.youtube.com/watch?v=s6oLWpLj560 www.youtube.com/watch?v=Q8xCTztsRmw&list=PL1IheunyylbaYAzQv8bdu3hxq8YX5cKlY 어셈블리어 문법은 AT&T, INTEL, GASM등 여러 문법 체계가 있다. 숫자 표기 AT&T : $1, $2 INTEL : 1, 2 레지스터 표기 AT&T : %RAX, %RBX INTEL : RAX, RBX 참조자 AT&T : () INTEL : [] OFFSET(주어진 주소로부터의 거리) AT&T : 4(EAX) INTEL : [EAX + 4] 4. 그 외 주요 범용 레지스터 EAX : Extended Accumulator Re..

어디선가 주워들은 임베디드 C언어 코딩 기술 - 3

1. 전처리문 : #include guards 전처리문은 Macro라고도한다. 말 그대로 문서내용을 복붙한다. 이 때문에 중복선언이 발생할 수도 있다. 다음의 경우를 보자 //main.h typedef struct ctrlBody{ int getsense; }TYPE_BODY_HANDLER; TYPE_BODY_HANDLER body; int sensordata; //ctrlBody의 getsense가 1이 될 떄데이터를 읽어 sensordata에 넣는다. // main.c #include #include main(){ //something while(1){ sensor(&body); ] } // sensor.h #include void sensor(TYPE_BODY_HANDLER *); // sensor..

반응형