시작은 미미하나 끝은 쥬쥬하리라.

Develop 19

[C++] 정적 멤버선언 vs 동적 멤버 할당

목차1. 정적 멤버 선언 / 동적 멤버 할당 2. 응용/심화3. 요약 1. 정적 멤버 선언 / 동적 멤버 할당 정적 멤버 선언 :프로그램 시작/종료와 함께 수명이 결정프로그램이 메모리에 로드될 때 할당되고, main() 함수가 실행되기 전에 초기화.정적 초기화, 동적 초기화 방식을 사용해서 선언 가능. - 정적 초기화 : 컴파일 시간에 결정되는 0 초기화 혹은 상수 초기화, 안전함.ex) Zero Initialization : 값을 대입해주지 않으면 0으로 초기화.ex) Constant Initialization : int a = 10;과 같이 상수로 초기화. - 동적 초기화 : 런타임 시간에 생성자가 호출되는 초기화,문제 발생.ex) int a = GetVal();과 같이 함수 리턴값을 통한 초기화.e..

[ C++] 오버로딩 vs 오버라이딩

목차1. 오버로딩(Overloading) vs 오버라이딩(Overriding)2. 응용/심화3. 요약 1. 오버로딩(Overloading) vs 오버라이딩(Overriding)오버로딩 : 같은 이름의 다른 시그니처(파라미터), 컴파일 시간에 결정- 컴파일러는 컴파일 시간에 호출부의 인자를 보고 어떤 함수를 실행할지 이미 결정.- C++ 컴파일러는 내부적으로 함수 이름 뒤에 파라미터 정보를 붙여서 서로 다른 이름으로 관리하기 때문에 호출 시점에 Overhead(비용)이 전혀 발생하지 않음.- 과도한 오버로딩과 암시적 변환은 성능에 악영향. 오버라이딩 : 부모 클래스의 virtual 함수를 재정의, 런타임에 결정- 포인터가 가리키는 실제 객체가 무엇인지에 따라 런타임에 호출될 함수가 결정.- 가상 함수를 가..

[C++] typedef

목차1. typedef2. 응용/심화3. 요약 1. typedeftypedef : 타입에 별칭을 만드는 도구// C++98typedef int (*PFN_Compute)(int a, int b);int Add(int a, int b) { return a + b; }PFN_Compute fn = &Add; -> fn(1,2)를 하게되면 Add(1,2)가 호출되며 3의 리턴값을 반환. - typedef는 기존의 선언 문법을 그대로 따라가기 때문에 포인터 혹은 중첩 타입에서의 가독성이 급격하게 떨어짐.-> 별칭(Alias)가 중간에 끼어들어 한 눈에 들어오지 않음. 2. 응용/심화typedef vs usingtypedef는 기존의 선언 문법을 그대로 따라가지만 using은 대입 연산자 형식을 사용.ex) ty..

[C++] extern과 using

목차1. extern, using2. 응용/심화3. 요약 1. extern, usingextern :메모리 할당은 한 곳에서만 할테니 다른 곳에서는 이름만 빌려서 사용하라고 링커에게 보내는 일종의 약속.ex) 전역 변수를 헤더 파일에 직접 선언하고 초기화하는 경우, 해당 헤더를 포함하는 모든 cpp에서 해당 변수가 생성되어 중복 정의 에러 발생.-> extern을 사용하여 변수 혹은 함수를 선언하는 경우 정확히 1개의 cpp에서 정의하겠다는 의미.-> 설정값, 공통 핸들 등 시스템 전역에서 공유해야하는 자원을 안전하게 노출하는 경우 사용. ex) 사용 예시// CommonConfig.h (헤더)#ifndef COMMON_CONFIG_H#define COMMON_CONFIG_H#ifdef __cpluspl..

[C++] 전방선언(Foward declaration)

목차1. 전방 선언2. 응용/심화3. 요약 1. 전방 선언전방 선언 : 타입(구조체 혹은 클래스)의 존재만 컴파일러에게 먼저 알리고 정의는 나중에 공개하는 기법. 동작 원리 : 컴파일러가 객체의 크기를 알 필요가 없는 경우에는 굳이 헤더의 상세 정의를 읽지 않아도됨, 포인터나 참조는 아키텍처(32bit/64bit)에 따라 크기가 고정되어 있기 때문. 불완전 타입(Incomplete Type) : 전방 선언을 의미하며 정확하게는 선언만 있고 정의가 없는 상태인 상태, 객체를 생성하거나 멤버 접근은 불가능하지만 주소를 다루는데는 문제가 없음. (Reference 선언 / 함수 인자 / 리턴 타입 선언 가능, sizeof / 객체 멤버 접근 불가) 왜 필요한가?프로젝트 규모가 커지면 헤더 파일이 수백 개로 증..

[C++] #include < >vs #include " "

목차1. include vs ""2. 응용/심화3. 요약 1. include vs "" include : 컴파일러 설정에 등록된 표준 시스템 / 외부 SDK 헤더 경로 우선 탐색 include " " :현재 프로젝트 또는 현재 파일 우선 탐색, 프로젝트 내부 소스라는 것을 묵시적 의미 - 전처리기는 #include 지시문을 만나면 어떤 경로를 어떤 순서로 탐색할지를 결정.- 일반적으로 " "(현재 디렉토리)를 먼저 보고 그 다음에 를 통해 시스템 / 표준 경로를 우선. (컴파일러 옵션에 따라 변형) 2. 응용/심화 #pragma once#include 표기는 중복 include를 막을 수 없음. 헤더의 중복 방지는 헤더 가드(#ifdef, #define, #endif) 또는 #pragma o..

[C++] C, C++, C#의 차이점

목차1. C, C++, C# 차이2. 응용/심화3. 요약1. C, C++, C# 차이근본적으로 세 언어는 문법이 다를 뿐만 아니라 컴퓨터 자원 관리에 대한 처리와 런타임 모델에서 차이가 있음. C++은 성능과 확장성에 집중하고 C#은 생산성과 안정성은 우선. C언어는 1972년에 개발된 언어로 이후 등장한 JAVA, JS, Python, PHP 등에게 영향을 주었음. C언어가 개발될 당시에는 PC 사양이 지금과 같지 않았기 때문에 C는 리소스가 적은 하드웨어에서 밀접하고 유용하게 동작. ex) 큐리오시티 C++은 C언어와 동일하지만 Class를 가지고 있는 C언어. C++을 개발한 비아르네 스트로우스트루프는 C++이 C언어의 대체제가 되기를 희망하면서 개발함, 실제로 C++은 C언어와 매우 유사하며 C언..

[Linux] 리눅스 주요 명령어 정리

리눅스 주요 명령어 정리 파일 및 디렉토리 텍스트 처리 시스템 정보 사용자 및 권한 관리 네트워킹 파일 및 디렉토리 1. ls : 디렉토리의 내용을 나열 2. cd : 현재 작업 디렉토리를 변경 3. pwd : 현재 작업 디렉토리를 인쇄 4. cp : 파일이나 디렉토리를 복사 5. mv : 파일이나 디렉토리를 이동하거나 이름을 변경 6. rm : 파일이나 디렉토리를 제거 7. mkdir : 새 디렉토리를 생성 텍스트 처리 1. cat : 파일의 내용을 연결하고 표시 2. echo : 메시지를 표시하거나 명령 에코를 활성화/비활성화 3. grep : 파일에서 특정 단어를 검색 4. sed : 텍스트 필터링 및 변환을 위한 스트림 편집기 시스템 정보 1. top : 프로세스에 대한 정렬된 정보를 표시하고 업..

[API] 네이버 오픈 API 사용하는 방법

네이버 오픈 API 사용하는 방법 1. 네이버 오픈 API 사이트 접속 2. 사용할 네이버 오픈 API 결정 3. 애플리케이션 등록 4. 애플리케이션 정보 확인 5. 신청한 서비스 API 요청 및 응답 예시 확인 1. 네이버 오픈 API 사이트 접속 네이버 오픈 API를 사용하기 위해서 하단의 네이버 오픈 API 사이트에 접속하여 주시기 바랍니다. NAVER Developers 네이버 오픈 API들을 활용해 개발자들이 다양한 애플리케이션을 개발할 수 있도록 API 가이드와 SDK를 제공합니다. 제공중인 오픈 API에는 네이버 로그인, 검색, 단축URL, 캡차를 비롯 기계번역, 음 developers.naver.com 2. 사용할 네이버 오픈 API 결정 사이트 접속 후, 메뉴바의 Documents > A..

Develop/etc - API 2024.01.14
반응형