프로그래밍/C, C++ 9

클래스와 객체

클래스- 클래스의 구성 요소를 클래스 멤버라고 한다. 이는 .(점 연산자)를 사용해 클래스 멤버에 액세스 할 수 있다..length()object.class_member - 멤버 데이터라고 하는 attribute는 클래스의 인스턴스에 대한 정보로 구성된다.- 멤버함수라고 하는 메소드는 클래스의 인스턴스와 함께 사용할 수 있는 함수이다. 일반적으로 (cpp파일과 동일한 이름의 헤더를 만들어 헤더에서 메소드를 선언하고 cpp파일에서 메소드를 정의한다. 클래스 외부에서 메소드를 정의할 때 메소드 앞에 '클래스이름::메소드이름'의 형식을 이용해 클래스를 나타낸다. 예제) 클래스, 객체 사용법 electric_relaxation이라는 객체(인스턴스)를 생성했다. 클래스가 선언된 헤더파일의 모습이다. ..

함수 - 범위 및 유연성 (지역/전역범위, 인라인 함수, 오버로드, 템플릿)

전역범위와 지역범위- 전역범위: 전역범위에서 정의된 변수는 프로그램 어디서나 액세스 할 수 있다.- 지역범위: 함수에서 정의된 변수는 함수 내에서만 액세스 할 수 있다. #include void enter_code(int passcode) { if (passcode == 0310) { std::string secret_knowledge = "https://content.codecademy.com/courses/regex/onyourexcitingjourneylearningtocodeyouwillfindthis.gif"; std::cout passcode가 맞았을 때만 secret_knowledge가 출력될 수 있도록 지역범위로 secret_knowledge를 함수 안에..

함수

C++에는 이미 표준 라이브러리의 일부로 생성된 함수들이 많다.예를 들어 , 헤더를 추가해 이용할 수 있다. #include #include int main() { // This seeds the random number generator: srand (time(NULL)); // Use rand() below to initialize int the_amazing_random_number = rand()%29; std::cout 추가를 통해 rand함수 이용했다.0~28의 랜덤한 수를 출력하는 코드이다. 선언과 정의- 선언: 함수의 이름, 반환 형식, 매개변수(함수의 인수이며 이를 입력 값으로 이용하는 경우 매개변수를 사용한다) return문은 함수 실행에서 마..

vector

1. 컴파일 타임 에러: 컴파일러에서 오류 발견- Syntax error(구문 에러): c++ 구문 규칙 위반 시 발생하는 에러 ex) 세미클론(;) 빠뜨림, )}] 괄호 안 맞음- Type error(타입 에러): 선언한 형식 간 불일치가 있을 때 발생하는 에러 ex) 변수 선언 빠뜨림, 잘못된 타입의 값 저장 2. 링크 타임 에러: 개체 파일을 실행 프로그램으로 결합하려 할 때 발생한 에러- 컴파일은 되지만 프로그램에서 찾을 수 없는 함수나 라이브러리로 인해 발생하는 에러 ex) 정의되지 않은 함수의 사용, main()이 Main()으로 있는 등 함수명이 맞지 않을 때 3. 런타임 에러: 실행 중인 프로그램을 검사하다가 에러 발견- 컴파일 타임 에러, 링크 타임 에러가 없으면 실행됨, 컴파..

에러

1. 컴파일 타임 에러: 컴파일러에서 오류 발견- Syntax error(구문 에러): c++ 구문 규칙 위반 시 발생하는 에러 ex) 세미클론(;) 빠뜨림, )}] 괄호 안 맞음- Type error(타입 에러): 선언한 형식 간 불일치가 있을 때 발생하는 에러 ex) 변수 선언 빠뜨림, 잘못된 타입의 값 저장 2. 링크 타임 에러: 개체 파일을 실행 프로그램으로 결합하려 할 때 발생한 에러- 컴파일은 되지만 프로그램에서 찾을 수 없는 함수나 라이브러리로 인해 발생하는 에러 ex) 정의되지 않은 함수의 사용, main()이 Main()으로 있는 등 함수명이 맞지 않을 때 3. 런타임 에러: 실행 중인 프로그램을 검사하다가 에러 발견- 컴파일 타임 에러, 링크 타임 에러가 없으면 실행됨, 컴파..

조건문, 연산자

if (조건){ ~~~ ; } 형태 조건이 참이면 { } 안이 실행되고 아니면 넘어간다. 조건이 참이면 if문의 do something 부분이 실행하고 아니면 else문 실행한다. 조건이 3개 이상일 때 이용한다. 조건이 정수 형식일 때 이용된다. 각각의 case 마지막 부분에 break를 추가해준다. 예제) 몸무게 계산하기#include int main() { std::cout > weight; std::cout > x; switch(x){ case 1: weight *= 0.78; break; case 2: weight *= 0.39; break; case 3: weight *= 2.65..

포인터

프로그램을 실행하려면 CPU, RAM 등 하드웨어와 같은 컴퓨터 리소스 중 일부를 사용해야 한다. 이중 가장 중요한 것이 프로그램 실행 시 사용되는 임시 메모리 RAM(Random Access Memory)이다. 메모리의 기본 단위는 바이트이고 모든 변수는 몇 바이트의 모음이다. 이때 할당된 RAM 섹션은 프로그램에 필요한 바이트 수의 블록이다.  사진의 메모리 블록에서 모든 바이트에는 16진수로된 주소가 있다.  포인터를 사용해 메모리 바이트에 접근할 수 있다. 변수의 주소를 포함하는 포인터는 해당 변수를 가리킨다고 한다. 변수를 선언하면 연속적인 바이트 블록이 메모리에 예약된다. 변수에 대한 포인터는 이 바이트 중 첫 번째 바이트의 주소이다.int *name; int* name  // 데이터유형 *포..

컴파일과 실행

컴파일: 컴퓨터가 알아듣게 기계어로 번영하는 과정. 기계어(네이티브 코드): 컴퓨터의 CPU에서 컴퓨터 프로그램을 실행하는 16진수 또는 이진 형태의 프로그래밍 언어- CPU를 통해 컴퓨터의 하드웨어에 직접 소프트웨어 형태로 프로그램 명령을 전달한다.ex) 0xFE (16진수) = 11111110 (2진수) 터미널(터미널 에뮬레이터): 사용자가 컴퓨터나 네트워크 장치에서 처리하는 명령을 실행할 수 있도록 하는 프로그램.-리눅스에서는 GNOME Terminal, Konsole, xterm이 있다. bash: 쉘 또는 명령 언어 인터프리터. shell: 명령어와 프로그램을 실행할 때 사용하는 인터페이스, 커널과 사용자 간의 다리 역할(사용자의 명령을 받아 해석하고 실행시켜줌) [리눅스]셸(Shell)이란? ..