C++ 입출력 입출력 객체 * 입력 스트림 객체인 cin은 삽입연산자(insertion operator) ">>"를 사용하여 데이터를 입력받아 변수를 저장한다. * 출력 스트림 객체 cout은 추출연산자(extraction operator) "<<"를 이용하여 변수의 내용을 화면에 출력한다. cout * cout.width() : 출력 길이 지정 * cout.fill(' ') : 공백을 체울 문자 지정
C++ template 템플릿 쳄플릿이란 자료형을 나중에 지정 될 수 있도록 만들어주는 문법이다. #include <iostream> using std::cout; using std::endl; template <class T> T Max(T i, T j) { return i>j ?i:j; } int main(){ cout<< "Max값은=" << Max(1,2)
C++ 오버라이딩 가상함수 * 가상함수는 기본(부모) 클래스 내에서 정의된 멤버함수를 파생(자식) 클래스에서 재정의하고자 할 때 사용한다. * 기본 클래스의 멤버함수와 같은 이름의 함수를 파생 클래스에서 재정의하여 사용한다. * 파생 클래스 내에서 가상함수의 재정의는 함수 중첩 기능과 비슷하지만 파생 클래스에서 재정의되는 가상함수는 기본 클래스와 함수의 리턴값, 매개변수 개수, 형이 완전히 같아야 한다. * 가상함수의 구현을
C++ 상속 #include <iostream> using std::cout; class P // 기본 클래스, 부모 클래스 { private: void a() { cout << "a\n"; } void b() { cout << "b\n"; } protected: void c() { cout << "c\n"; } void d() { cout << "d\n&
C++ default parameter 디폴트 매개변수 C++에서는 함수를 호출할 때 별도의 매개변수를 전달하지 않아도 기본적인 값을 전달하도록 함수 원형을 선언할 때 디폴트 값을 지정할 수 있다. 주의할 점 * 일단 디폴트 매개변수를 정의하기 시작하면 그 다음(오른쪽)의 매개변수들은 모두 디폴트 매개변수를 가져야 한다. * 선언과 정의가 따로 있다면, 선언부에만 디폴트 매개변수를 설정한다. * 특히 클래스
learning C++ 오버로딩 다형성 하나의 표현으로 여러개의 유형을 나타내는 방법으로 객체 지향 프로그래밍 에서는 다양한 유형 의 엔터티(기능)에 대한 단일 인터페이스를 제공하는 것이다. 이 개념은 유기체나 종이 다양한 형태나 단계를 가질 수 있다는 생물학의 원리에서 빌려온 것이라고 한다[1] 1. 출처 위키백과 ↩︎ 함수 오버로딩 다형성을 구현하는 방법중 하나로, 같은 이름을 사용하는
C++ new(동적 메모리) 정적 메모리와 동적 메모리 정적 메모리 할당 * 컴파일시 필요한 메모리 할당 * 배열 : int array[32]; // 항상128byte 공간 확보 * 사용하지 않는 메모리까지 충분히 잡아 낭비 * 너무 큰 메모리는 할당 불가 * 보통 수 kB까지는 스택 사용, 그 이상은 heap에 할당 * Windows(Visual Studio)에서 기본 스택 크기는 1MB * Linux와 macOS에서 기본 스택의
C++ const const constant(상수)의 줄임말로 이름과 같이 상수처럼 그 내용이 변경되지 않도록 한다. 아레는 기본적으로 변수에 사용하는 방법이다. const int x = 2; // 변수 x는 항상 1, 변경 불가, 초기값 지정해야 int const y = 3; // 비추, const는 자료형 앞에 씀 const int z{4}; // Uniform initialization, C++11, z{} constexpr int
생성자와 소멸자 생성자와 소멸자 * 생성자와 소멸자는 객체 지향 프로그래밍에서 클래스의 특별한 종류의 함수다 * 생성자는 객체가 생성될 때 호출되는 함수로, 객체의 초기화를 담당한다. 일반적으로 클래스와 동일한 이름을 가지고 있으며, 객체가 생성될 때 자동으로 호출되어 멤버 변수의 초기값을 설정하거나 다른 초기화 작업을 수행한다. * 소멸자는 객체가 소멸될 때 호출되는 함수로, 객체의 리소스 해제나 정리 작업을
C++ 배열 배열? * 특정 자료형을 연속으로 담는 데이터 집합 * 쉽게 말하면 연속된 박스들 차원 * 일반적으로 사용되는 1차원부터 2,3...n차원까지 가능 복사 * = 을 사용하면 char [5]를 할당할 수 없다고 함 * strcpy(넣을 곳, 원본)을 사용한다. * 문자열을 다룰때는 std::string 사용하는게 좀 더 편리하다.(= 사용 가능) 문자열 * 배열의 주 사용처중 하나로
learning C++ 네임 스페이스 네임 스페이스 * namespace{} 형태로 쓰인다. * 같은 이름의 변수가 있거나 특정 구엮을 생성할 때 쓰임 범위 지정 연산자 :: * 멤버함수가 어느 클래스에 포함되어 있는지 나타낼때 * 함수 안에서 전역변수를 접근할때 쓰인다. using 두가지 방법으로 쓰임 * using namespace 클래스 * using 클래스::함수 각각 따로 지정하는 두번쨰 방법이 주로 쓰임
객체지향 프로그래밍(OOP) 객체? 아무리 생각해도 우리나라 번역가들의 어려운 말 사랑은 이해가 안된다. 굳이 쓴 단어가 객체라니... 우리 주위의 있는 모든 것(가구, 태양, 모니터, 컴퓨터, 프린터, 연필 등등...)을 보통 사물이라 부른다. 그러니까, 객체보단 사물이 어울리는 말이다. 사물지향 프로그래밍. 이제 다시 말을 뜯어보자. 사물을 지향한다? 이건 구조적 프로그래밍을 해봤다면 이해가 빠르다. 구조적
구조적 프로그래밍 구조적? * structured programming으로써 기능의 따라 세분하는것이 특징이다. * 기본적으로는 각각의 기능을 함수로 구현한다. * C나 파스칼에 쓰인다 아레는 몇몇 장단점이다. * 처리 동작에 중점을 두어 프로그램을 작성한다. * 자료가 프로그램 전체의 노출 * 프로그램이 복잡해지면 디버깅 및 유지보수가 어려워짐 출처: Youtube - SmileHan 객체지향
소프트웨어 위기(crisis) 동기 수업시간에 객체지향을 배우기 위해 왜 나오게 되었는지를 보고 더 궁금해서 찾아보게 되었다. 어떤 개념이나 발전이 어째서 나왔는지를 이해하는것이 중요하다고 생각하기도 하고. 그래서 소프트웨어 위기란? F.L.바우어가 1968년 독일 가미시에서 열린 첫번쨰 나토 소프트 웨어 공학학회에서 사용했으며, 에츠허르가 1972년 튜링상 수상 연설에서도 등장했다 한다. 단순하게 설명하면, 기존의 사용하던 소프트웨어
learning C언어 구조체 구조체 * 구조체는 이미 정의된 서로 다른 자료형(int, char, double 등의 변수와 배열, 포인터, 구조체도 포함됨)들을 구성 요소로 하여 새로운 자료형을 만드는 것임 * 그룹핑하면 프로그래밍하기 편리한 자료들을 하나로 묶는 것임 * 배열을 사용하면 동일한 자료형 만을 한꺼번에 관리할 수 있지만 구조체는 상이한 자료형들을 한 묶음으로 관리할 수 있음 #include <
learning C/C++ 함수 함수 구조 * 입력 매개변수(parameter), 인자 * 출력 반환값(return value), 리턴값 함수가 돌려주는 결과 값 * void 리턴값이 없으면 리턴형 쓰는 자리에 void 매개변수가 없으면 매개변수 쓰는 자리에 void 사용 방법 * 함수 정의 함수 만들기 이름, 매개변수, 리턴형, 기능 * 함수 호출 함수 사용하기 이름, 매개변수 * 함수 선언 함수의 사용법 이름, 매개변수,
learning C/C++ 제어문 제어문의 종류 C언어의 제어문에는 조건문 반복문 분기문이 있으며 종류는 아레와 같다 조건문 반복문 분기문 if for goto if~else while continue switch~case do~while break 이중 if와 for문의 사용빈도가 가장 높다. if문 if (참){ 참일경우 실행문 } else if (조건){ 참이 아니며 조건이 맞을 경우 } else { 거짓일경우 실행문 } 위 처럼
learning C언어와 C++ 기초 비교 #include <iostream> //C++ int main() { std::cout << "Hello World\n"; //C++ printf("dd"); //C } 원래 C에서 쓰는 방법은 printf지만, c++에서 새로 생긴 방법은 cout이다. c++에서 cout은 std(standard)네임스페이스 안에 만들어져 있으므로 std를 불러올 필요가 있으며 방법은 세가지 정도가 있다.
learning C언어 전치와 후치의 우선순위 전치와 후치에 배운지는 좀 지났지만, 그 당시에 궁금 했던것을 찾아 블로그에 남긴다. 제목이 본론이브로 설명은 간단하게 하고 넘어간다. C언어에는 ++, --를 이용해서 그 변수에 1을 더하거나 뺄 수 있다. int main(void){ int a = 0; a = a++; a = ++a; return 0; } 여기서 ++, --는 같은 역할로 작동을 한다. 그럼 왜 두 가지가
홈 서버 제작기 - 서론 블로그의 첫 글을 의미 있게 가져가고 싶어 고민하다가 떠올린 주제가 홈 서버 제작기다. 특히 내 홈서버는 혼자 정보를 찾고 고친게 많아 나에게 의미도 깊다. 제작기라 부르지만 이미 이 블로그가 홈서버로 만들어져 있으므로 내가 어떤 시스템을 왜, 어떻게 구축했는지 정도만 파트를 나눠서 적게 될것 같다. 왜 만들게 되었는가 어떤 일을 할