본문 바로가기
반응형

프로그래밍 언어170

[C++] default 생성자 요청 default 생성자 요청클래스에서 아래와 같이 개발자가 기본 생성자를 만들 수 있다.class Point{ int x, y;public: Point() {}; Point(int a, int b) : x{ a }, y{ b } {}};int main(){ Point p;}  「= default」 형태로컴파일러에게 기본 생성자를 만들어 달라고 요청할 수 있다.이는 최적화를 보다 잘 지원 받기 위함class Point{ int x, y;public: Point() = default; Point(int a, int b) : x{ a }, y{ b } {}};int main(){ Point p;}  📌 [C++] 생성자 함수  [C++] 생성자 함수생성자 함수 (constructor)• 클래스 이름과 동일한 .. 2025. 2. 5.
[C++] 복사 생성자 (Copy Constructor)란? 복사 생성자 (Copy Constructor)란?객체가 자신과 동일한 타입의 객체로 초기화 될 때 호출되는 생성자class A{ int no; char ch;public: A(const A & ra); // 복사생성자함수};  [예시] 복사 생성자p2는 Point(int) 필요하지만Point(Point) 형태로 복사 생성자로 build error 발생 Xclass Point{ int x; int y;public: Point() : x{ 0 }, y{ 0 } {} Point(int a, int b) : x{ a }, y{ b } {}};int main(){ Point p1(1, 2); // ok // Point p2(1); // error Point p3(p1); // ok }  .. 2025. 2. 4.
[C++] default member initializer 클래스 멤버 초기화크게 대입 방식, 초기화 방식 2가지가 존재한다. 대입 방식① string 타입의 디폴트 생성자 호출② 대입 연산자 호출 초기화 방식① 해당 인자에 맞는 생성자 호출하여 초기화#include int g = 0;class Harbang{ std::string name; int age;public: Harbang(const std::string& s, int a) { // 대입 방식 name = s; age = a; }};class Forest{ std::string name; int age;public: Forest(const std::string& s, int a) : name{s}, age{a} {} // 초기화}; Q) 어떤 방식이 좋을까?간단한 원형 타입이라면 초기화 방식이.. 2025. 2. 2.
[C++] 클래스 파일 분할 클래스 파일 분할일반 함수와 같이 클래스도멤버 함수를 선언과 구현으로 분리하는 것이 일반적이다. 템플릿과 같이반드시 헤더 파일에 멤버 함수 구현부도 같이 있어야 하는 경우도 있다.📌 헤더파일(.h) 만들어서 include 하기 [C/C++] [전처리기] 헤더파일(.h) 만들어서 include 하기헤더파일(.h) 만들어서 include 하기 헤더파일(.h)에는 함수 원형이나 클래스만 선언한다.내부 구현은 별도의 파일에서 구현한다. [Calc.h]int add(int A, int B);  [Calc.cpp]#include "Calc.h"int add(int a, int b)zoosso.tistory.com 하나의 파일에서 구현 [main.cpp]#include #include class Blog{ std:.. 2025. 1. 30.
[C++] constexpr function constexpr function란함수명 앞에 constexpr 키워드를 사용할 수 있다.이는 함수 인자값을 컴파일 시간에 결정할 수 있으면 컴파일 시간에 함수 실행!결정할 수 없다면 (일반 함수처럼) 실행 시간에 함수 실행하게 된다.  📌 [C++] constexpr 키워드 [C++] constexpr 키워드constexpr• 컴파일 시간에 결정되는 상수 값• C++11 에서 도입된 문법• 템플릿 인자로 사용 가능• 상수식 계산, 배열 크기 정의 등 컴파일 시간에 최적화되는 코드 작성에 유용  const 키워드 비zoosso.tistory.com  [예제] constexpr function#include constexpr int square(int x, int y){ return x * y;}int .. 2025. 1. 29.
[C++] member initializer list member initializer list 필요성• 멤버 데이터로 상수나 참조가 있는 경우• 디폴트 생성자가 없는 타입이 멤버로 있는 경우  [예제] member initializer list 사용하지 않은 경우상수와 참조 변수는 반드시 초기화 되어야 한다.class Harbang{ const int c; int& r;public: Harbang(int c, int& r) { this->c = c; // error this->r = r; // error }};int main(){ int n = 5; Harbang h(5, n);} 생성자 블록 안에 값을 대입해주었지만초기화가 아니기 때문에 Build Error 발생멤버 초기화 리스트로 문제를 해결할 수 있다.  [예제] member initialize.. 2025. 1. 29.
[C] [전처리기] 매크로와 선행처리기 매크로와 선행처리기실행파일이 컴파일과 링크의 과정을 거치는데 컴파일 이전에 선행처리 과정을 거친다.▶ 선행처리 → 컴파일 → 오브젝트 파일 → 링크 → 실행 파일※ 컴파일 과정에 포함해서 표현하기도 한다.    한편으로는 컴파일러에 따라서 전처리 과정은 전처리기(preprocessor)라는    별도의 프로그램으로 수행하기도 한다.※ 소스코드가 선행 처리기를 거쳐도 별도의 파일이 생성되는 것은 아니다.    소스파일을 유지 하며, 선행처리 명령문대로 소스코드의 일부를 치환할 뿐이다.    - 컴파일: 오브젝트 파일 생성    - 링커: 실행파일 생성#include #define NAME "TEST"#define PRINT_ADDR puts("주소: xxx-xxx");#define SQUARE(X) X*X.. 2025. 1. 28.
[C++] lower_bound, upper_bound 사용해보기 lower_bound, upper_bound▶ lower_bound(start, end, val) =  [start, end) 범위에서 val 이상인 첫 번째 원소 위치 반환▶ upper_bound(start, end, val) =  [start, end) 범위에서 val 을 초과하는 첫번째 원소 위치 반환Harbang lower_bound(Harbang first, Harbang last, const T& value);Harbang lower_bound(Harbang first, Harbang last, const T& value, Compare comp);Harbang upper_bound(Harbang first, Harbang last, const T& value);Harbang upper_bou.. 2025. 1. 27.
[C++] rvalue reference rvalue referencervalue 등호(=) 오른쪽에만 올 수 있는 것lvalue 등호(=) 오른쪽/왼쪽 모두 올 수 있는 것  [예제] lvalue와 rvalueint main(){ int v = 0; v = 100; // ok (v = lavlue) 20 = v; // error (20 = rvalue)}[예제] lvalue reference• lvalue만 가리킬 수 있다.• rvalue에 사용하면 errorint main(){ int v = 0; int& r1 = v; // ok int& r2 = 100; // error}  [예제] const lvalue refenece• lvalue와 rvalue 모두 가리킬 수 있다.int main(){ int v = 0; //.. 2025. 1. 27.
[C++] constexpr 키워드 constexpr• 컴파일 시간에 결정되는 상수 값• C++11 에서 도입된 문법• 템플릿 인자로 사용 가능• 상수식 계산, 배열 크기 정의 등 컴파일 시간에 최적화되는 코드 작성에 유용  const 키워드 비교값 초기화 이후 변경할 수 없다는 것에서는 동일하다.#include void main(){ const int x = 5; x = 3; // error constexpr int y = 6; y = 2; // error}  Q) 그렇다면 어떤 차이가 있을까?상수값은 컴파일, 실행 시점 등 정해지는 시기가 다를 수 있다.#include void main(){ const int x = 5; int arr1[x]; // ok int temp = 3; const .. 2025. 1. 26.
반응형