C++ (5) 썸네일형 리스트형 C++에서 헤더와 소스 (.h/.hpp vs .cpp) 헤더와 소스C++ 프로젝트에서는 다음과 같이 헤더와 소스가 분리된 모습을 볼 수 있다. // Vector.h#ifndef VECTOR_H#define VECTOR_Hclass Vector {private: double x, y;public: Vector(double x, double y); double length() const;};#endif // Vector.cpp#include "Vector.h"#include Vector::Vector(double x, double y) : x(x), y(y) {}double Vector::length() const { return std::sqrt(x * x + y * y);} C++에서는 헤더 파일과 소스 파일을 따로 분리하는 것이 일반적.. C++ 연산자 오버로딩과 프렌드 기본적인 연산자 오버로딩C++은 +, == 와 같은 연산자를 오버로딩할 수 있다. #include "iostream"class Point {public: Point(int _x, int _y) { this->x = _x; this->y = _y; } Point() { Point(0, 0); } Point operator + (const Point &o) { Point ret; ret.x = o.x + (*this).x; ret.y = o.y + (*this).y; return ret; } bool operator == (const Point &o) { return (*this).x == o.x and (*this).y == o.y; }private.. C++ if statement with initializer 본 게시글에서는 C++17부터 if문을 이용할 때 사용할 수 있는 문법을 소개한다. 어떤 정수 x의 값을 입력받고 10인지 확인하는 코드를 짠다고 해보자. int x; std::cin >> x; if (x == 10) { std::cout x; x == 10) { std::cout C++ Structured Binding(구조적 바인딩) C++17부터 지원하는 structured binding이란 어떤 배열, STL 같은 컨테이너에서 멤버들을 쉽게 바인딩할 수 있도록 도와주는 문법이다. 친숙한 std::map을 예시로 바인딩을 해보자. #include #include int main() { std::map mp; for (int i = 1; i < 11; i++) { mp[i] = i * i; } // iterator, basic for for (std::map::iterator it = mp.begin(); it != mp.end(); it++) { std::cout first C++ 람다 표현식 lambda expression 이 게시글에서는 C++11부터 등장한 람다 표현식을 배운다. C++ lambda의 간략한 개요 함수형 프로그래밍의 패러다임을 따라 C++도 JS나 파이썬처럼 익명 함수를 구현하는 문법으로 도입되었다. C++ lambda 기본 C++ 람다는 다음과 같은 형태를 지니고 있다. [캡처] (매개변수) ->반환형{ 람다의 내용 } (해당 익명 함수를 즉시 호출할 경우 실제 전달하는 인자); 이렇게만 보면 이해가 어려울 수 있으니 다음 예시 코드를 통해 실체를 보도록 하자. #include void print1() { std::cout void{ std::cout void{ // 중괄호 안에는 이렇게 람다 표현식을 호출 했을때의 실행 내용이 들어있다. // 이 코드 같은 경우는 단순히 Hello!를 출력하고 개행을.. 이전 1 다음