분류 전체보기(1085)
-
일상
2021.03.01
[일상] 원룸 에어컨 청소하기 (feat 공간 치유사)
제가 살고 있는 원룸은 저층이기도 하고 주변이 건물로 빽빽이 차 있어 환기가 쉽지 않아 항상 집안의 공기가 탁한 편이었습니다. 그래서 방 안의 공기의 질을 향상하고자 에어컨에 있는 공기청정 모드를 많이 사용하는데 요즘 들어 에어컨을 가동할 때마다 에어컨 특유의 꾸릿꾸릿한 냄새가 많이 났습니다. 이를 해결해보고자 에어컨 청소도 해보고 탈취제도 뿌려봤지만 냄새가 사라지지 않아 해결 방안을 찾아봤습니다. 청소하지 않은 에어컨에는 세균과 곰팡이가 득실거린다고 합니다. 에어컨을 켰을 때 축축한 곰팡이 냄새가 나면 즉시 청소를 해야한다고 하던데 그 특유의 에어컨 꾸릿꾸릿한 냄새가 곰팡이 냄새라는 생각이 갑자기 들더군요. 곰팡이를 제거하려면 에어컨 필터만 청소해서는 안되고 에어컨 전체를 뜯어서 내부의 곰팡이와 먼지를..
-
Languague/C , C++ , C#
2021.02.27
[C++] string 클래스 (문자열 다루기) 사용법 & 예제 총정리
C++ 문자열 클래스(string) 기존 C언어에서는 문자열을 다루기 위해서는 char[] 배열을 사용하였습니다. 그리고 끝에 null문자 '\0'을 넣어줌으로써 문자열이 끝이났다는것을 판별하였죠. 이렇게 사용하다보니 문자열 길이도 신경써줘야 하고 사용하는 과정에서 문자열도 자주 깨지는 등의 불편한 점이 굉장히 많았습니다. 이와 같은 불편함을 줄이기 위해 C++에서는 Java나 Python과 같이 문자열을 다루는 string 클래스를 만들어 사용할 수 있게끔 되었습니다. string 클래스에서는 문자열을 객체로 다룹니다. 사용하기 편리해진 만큼 컴퓨터가 해야할 일이 많아졌다는 것을 뜻합니다. string클래스를 사용하면 char[] 배열을 사용하는 방식보다는 다소 느려지는것은 어쩔수 없는 부분이긴 합니다..
-
Languague/C , C++ , C#
2021.02.26
[C++] 연산자 오버로딩에 대하여
연산자 오버로딩이란? 연산자 오버로딩이란 연산자를 재정의하여 사용자가 원하는 형태로 사용이 가능하게끔 하는것을 말합니다. 대부분의 기본 제공 연산자 함수는 전역 함수 또는 클래스로 재정의 가능합니다. 오버로드 된 연산자는 함수로 구현됩니다. 이렇게 재정의된 연산자 함수는 연산자를 이용하듯 호출할 수 있습니다. 이렇게 연산자들을 함수로 만들어서 넣어주면 사용자는 훨씬 더 간결한 방법으로 코드를 작성할수도 있고 코드의 확장성도 높아집니다. 연산자 오버로딩 사용시 주의점 1. C++에서 사용되지 않는 연산자는 재정의 할 수 없습니다. 2 기본 제공 데이터 형식에 적용할때 연산자의 의미를 다시 정의할 수 없습니다. 3. 오버로딩 한 연산자는 클래스 멤버함수이거나 전역함수여야만 합니다. 연산자 오버로딩 할 수 없..
-
Languague/C , C++ , C#
2021.02.25
[C++] 복사 생성자, 복사 대입 연산자 (+깊은 복사)
클래스 생성 시 컴파일러가 자동으로 생성해주는 함수는 생성자, 소멸자, 복사 생성자, 복사 대입 연산자 이렇게 4가지가 있으며 이번 포스팅에서 다룰 내용은 복사 대상자와 복사 대입 연산자입니다. 생성자나 소멸자에 대해 궁금하시다면 아래 글의 생성자와 소멸자 부분을 참고해주세요. [C++] 클래스(Class) 사용법 & 예제 총정리 복사 생성자와 복사 대입 연산자란? 복사 생성자는 객체의 복사본을 생성할 때 호출되는 생성자입니다. 생성자나 소멸자와 마찬가지로 클래스를 작성할 때 복사 생성자를 생략하면 디폴트 생성자처럼 컴파일러가 알아서 만들어줍니다. 복사 대입 연산자는 같은 타입의 객체를 이미 생성되어 있는 객체에 값을 복사할 때 사용됩니다. 마찬가지로 따로 정의를 해주지 않을 경우 컴파일러가 알아서 생성..
-
Languague/C , C++ , C#
2021.02.25
[C++] 순수 가상 함수, 추상 클래스에 대하여
이 포스팅은 가상 함수에 대해 알고있다는 전제하에 작성되었습니다. 해당 내용을 모르시면 아래 링크되어 있는 글을 먼저 확인해주세요. [C++] 가상함수(virtual) 사용법 총정리 순수 가상함수란? 순수 가상함수란 선언(declaration)만 있고 구현(definition)이 없는 가상 함수를 의미합니다. virtual void func() = 0; 위와 같이 가상함수에 0을 대입하면 순수 가상함수가 됩니다. 순수 가상함수는 파생 클래스에서 재정의할 것으로 예상되는 함수에 대해 미리 호출 계획을 세워 두기 위해 정의합니다. 추상 클래스 위와 같은 순수 가상함수를 하나라도 가지고 있는 클래스를 추상클래스(abstract class)라고 합니다. 추상 클래스는 객체를 생성할 수 없습니다. 추상 클래스는 ..
-
Languague/C , C++ , C#
2021.02.24
3
[C++] 가상함수(virtual) 사용법 총정리
가상함수란? 가상함수는 부모 클래스에서 상속받을 클래스에서 재정의할 것으로 기대하고 정의해놓은 함수입니다. virtual이라는 예약어를 함수 앞에 붙여서 생성할 수 있으며 이렇게 생성된 가상함수는 파생 클래스에서 재정의하면 이전에 정의되었던 내용들은 모두 새롭게 정의된 내용들로 교체됩니다. 가상함수를 사용해야 하는 이유 컴파일러는 함수를 호출할 때 매우 복잡한 과정을 거치게 됩니다. 그렇기에 컴파일러는 함수를 호출하는 코드는 컴파일 타임에 고정된 메모리 주소로 변환시킵니다. 이것을 정적바인딩이라고 합니다. 일반 함수의 경우 모두 이러한 정적바인딩을 하게 됩니다. 하지만 일반 함수를 오버 로딩하게 되면 정적바인딩으로 인해 문제가 될 수 있습니다. 가상함수가 아닌 보통의 경우 부모 클래스형 포인터로 멤버 함..
-
Languague/C , C++ , C#
2021.02.24
[C++] 프렌드(friend) 사용법 (함수, 클래스) 총정리
friend를 사용하는 이유 프렌드를 쓰는 이유는 친구나 동료처럼 수평적인 관계의 클래스간의 멤버 변수를 공유해야 할 경우 주로 쓰입니다. 예를 들면 하나의 클래스에서 다른 클래스의 내부 데이터에 접근 해야할 경우 프렌드를 써서 권한을 주는 경우를 예로 들수 있습니다. 이렇게 friend를 사용하면 자신의 개체뿐만이 아닌 다른 타입의 개체를 접근하는 것이 가능해지기 때문에 코드의 확장이 수월하게 이루어집니다. 단 이렇게 프렌드를 사용할 경우 개발자의 입장에서는 개발에 편리하겠지만 캡슐화 파괴의 주범이 되어 설계가 꼬여버리는 경우가 생길 수 있습니다. 클래스 내부에서만 써야할 멤버들이 다른곳에서 계속 접근을 허용하게 되면 데이터 보호도 어렵고 캡슐화를 지향하는 객체지향적 설계라고 보기 어렵겠죠. 프렌드는 ..
-
Languague/C , C++ , C#
2021.02.23
5
[C++] 클래스(Class) 사용법 & 예제 총정리
클래스(Class)란? 클래스(class)는 객체 지향 프로그래밍(OOP)에서 특정 객체를 생성하기 위해 변수와 메서드를 정의하는 일종의 틀이며 내부적으로 객체를 정의하기 위한 상태 값을 의미하는 멤버 변수와 클래스의 동작인 메서드(함수)로 구성됩니다. 객체 지향 프로그래밍에서는 모든 데이터를 객체(object)로 취급하며 이 객체들의 조합으로 프로그래밍을 하는 방식을 의미합니다. C++에서 클래스(class)란 구조체(struct)의 상위 호환으로 이해할 수 있습니다. 구조체와 다른점은 접근 제어 지시자가 추가되었고 함수를 포함할 수 있게 된 점입니다. 접근 제어 지시자 지시자 설명 public 어디서든 접근이 가능 (외부에서도 모두 접근 가능) private 클래스 내부에 정의된 함수에서만 접근 허용..
-
Languague/C , C++ , C#
2021.02.23
1
[C++] 템플릿(template) 사용법 & 예제 총정리
템플릿이란? 템플릿은 어린시절에 한번쯤 사용했을 모양자와 같습니다. 모양자에는 다양한 종류의 도형들이 틀로 만들어져 있습니다. 이 틀을 활용하면 누구나 정말 반듯한 네모를 그릴수도 있고 별도 그릴수 있습니다. 템플릿의 생산성이 뛰어난 이유도 이와 같습니다. 정말 완성도 높은 코드를 모양자로 찍어내듯 생성할 수 있기 때문입니다. 특히 소스코드의 완성도를 높인 상태에서 STL처럼 확실하게 검증된 라이브러리를 사용한다면 완성도와 생산성, 두마리 토끼를 한꺼번에 잡을 수 있습니다. 템플릿을 많이쓰면 컴파일 속도가 느려지지만 최신 C++ 개발 트렌드를 따르려면 템플릿은 선택이 아니라 필수입니다. 생산성이 높고 유지보수성이 뛰어난 코드가 당연히 좋은 코드이기 때문입니다. ※ 누군가가 템플릿으로 만들어주거나 만든 템..
-
Languague/C , C++ , C#
2021.02.22
1
[C언어/C++] 매크로(define) 함수 사용법 & 예제
매크로 함수란? 매크로 함수는 함수처럼 인자를 설정할 수 있는 매크로를 의미합니다. 매크로 상수와는 달리 매크로 함수 이름에 괄호 와 함께 인자 목록이 주어져 있습니다. 매크로 함수라고 부르지만 단순히 치환하기만 하므로 실제로 함수는 아닙니다. 함수 선언과 비슷하지만 매크로 함수는 인자의 자료형을 신경 쓰지 않습니다. 즉, 자료형의 독립성을 보장합니다. 또 매크로 함수 내부에서 자기 자신을 호출할 수 없다는 특징이 있습니다. 매크로를 정의하는 경우에는 컴파일이 되면 해당 매크로 이름을 가진 것들이 지정해놓은 값으로 변해서 컴파일 됩니다. 매크로 함수 사용법 #define (매크로 함수 이름) (매크로 함수 기능) #define ADD(a,b) a+b //ex #define으로 시작되는 전처리 문장을 매크..
-
일상 2021.03.01[일상] 원룸 에어컨 청소하기 (feat 공간 치유사) 제가 살고 있는 원룸은 저층이기도 하고 주변이 건물로 빽빽이 차 있어 환기가 쉽지 않아 항상 집안의 공기가 탁한 편이었습니다. 그래서 방 안의 공기의 질을 향상하고자 에어컨에 있는 공기청정 모드를 많이 사용하는데 요즘 들어 에어컨을 가동할 때마다 에어컨 특유의 꾸릿꾸릿한 냄새가 많이 났습니다. 이를 해결해보고자 에어컨 청소도 해보고 탈취제도 뿌려봤지만 냄새가 사라지지 않아 해결 방안을 찾아봤습니다. 청소하지 않은 에어컨에는 세균과 곰팡이가 득실거린다고 합니다. 에어컨을 켰을 때 축축한 곰팡이 냄새가 나면 즉시 청소를 해야한다고 하던데 그 특유의 에어컨 꾸릿꾸릿한 냄새가 곰팡이 냄새라는 생각이 갑자기 들더군요. 곰팡이를 제거하려면 에어컨 필터만 청소해서는 안되고 에어컨 전체를 뜯어서 내부의 곰팡이와 먼지를..
-
Languague/C , C++ , C# 2021.02.27[C++] string 클래스 (문자열 다루기) 사용법 & 예제 총정리 C++ 문자열 클래스(string) 기존 C언어에서는 문자열을 다루기 위해서는 char[] 배열을 사용하였습니다. 그리고 끝에 null문자 '\0'을 넣어줌으로써 문자열이 끝이났다는것을 판별하였죠. 이렇게 사용하다보니 문자열 길이도 신경써줘야 하고 사용하는 과정에서 문자열도 자주 깨지는 등의 불편한 점이 굉장히 많았습니다. 이와 같은 불편함을 줄이기 위해 C++에서는 Java나 Python과 같이 문자열을 다루는 string 클래스를 만들어 사용할 수 있게끔 되었습니다. string 클래스에서는 문자열을 객체로 다룹니다. 사용하기 편리해진 만큼 컴퓨터가 해야할 일이 많아졌다는 것을 뜻합니다. string클래스를 사용하면 char[] 배열을 사용하는 방식보다는 다소 느려지는것은 어쩔수 없는 부분이긴 합니다..
-
Languague/C , C++ , C# 2021.02.26[C++] 연산자 오버로딩에 대하여 연산자 오버로딩이란? 연산자 오버로딩이란 연산자를 재정의하여 사용자가 원하는 형태로 사용이 가능하게끔 하는것을 말합니다. 대부분의 기본 제공 연산자 함수는 전역 함수 또는 클래스로 재정의 가능합니다. 오버로드 된 연산자는 함수로 구현됩니다. 이렇게 재정의된 연산자 함수는 연산자를 이용하듯 호출할 수 있습니다. 이렇게 연산자들을 함수로 만들어서 넣어주면 사용자는 훨씬 더 간결한 방법으로 코드를 작성할수도 있고 코드의 확장성도 높아집니다. 연산자 오버로딩 사용시 주의점 1. C++에서 사용되지 않는 연산자는 재정의 할 수 없습니다. 2 기본 제공 데이터 형식에 적용할때 연산자의 의미를 다시 정의할 수 없습니다. 3. 오버로딩 한 연산자는 클래스 멤버함수이거나 전역함수여야만 합니다. 연산자 오버로딩 할 수 없..
-
Languague/C , C++ , C# 2021.02.25[C++] 복사 생성자, 복사 대입 연산자 (+깊은 복사) 클래스 생성 시 컴파일러가 자동으로 생성해주는 함수는 생성자, 소멸자, 복사 생성자, 복사 대입 연산자 이렇게 4가지가 있으며 이번 포스팅에서 다룰 내용은 복사 대상자와 복사 대입 연산자입니다. 생성자나 소멸자에 대해 궁금하시다면 아래 글의 생성자와 소멸자 부분을 참고해주세요. [C++] 클래스(Class) 사용법 & 예제 총정리 복사 생성자와 복사 대입 연산자란? 복사 생성자는 객체의 복사본을 생성할 때 호출되는 생성자입니다. 생성자나 소멸자와 마찬가지로 클래스를 작성할 때 복사 생성자를 생략하면 디폴트 생성자처럼 컴파일러가 알아서 만들어줍니다. 복사 대입 연산자는 같은 타입의 객체를 이미 생성되어 있는 객체에 값을 복사할 때 사용됩니다. 마찬가지로 따로 정의를 해주지 않을 경우 컴파일러가 알아서 생성..
-
Languague/C , C++ , C# 2021.02.25[C++] 순수 가상 함수, 추상 클래스에 대하여 이 포스팅은 가상 함수에 대해 알고있다는 전제하에 작성되었습니다. 해당 내용을 모르시면 아래 링크되어 있는 글을 먼저 확인해주세요. [C++] 가상함수(virtual) 사용법 총정리 순수 가상함수란? 순수 가상함수란 선언(declaration)만 있고 구현(definition)이 없는 가상 함수를 의미합니다. virtual void func() = 0; 위와 같이 가상함수에 0을 대입하면 순수 가상함수가 됩니다. 순수 가상함수는 파생 클래스에서 재정의할 것으로 예상되는 함수에 대해 미리 호출 계획을 세워 두기 위해 정의합니다. 추상 클래스 위와 같은 순수 가상함수를 하나라도 가지고 있는 클래스를 추상클래스(abstract class)라고 합니다. 추상 클래스는 객체를 생성할 수 없습니다. 추상 클래스는 ..
-
Languague/C , C++ , C# 2021.02.24 3[C++] 가상함수(virtual) 사용법 총정리 가상함수란? 가상함수는 부모 클래스에서 상속받을 클래스에서 재정의할 것으로 기대하고 정의해놓은 함수입니다. virtual이라는 예약어를 함수 앞에 붙여서 생성할 수 있으며 이렇게 생성된 가상함수는 파생 클래스에서 재정의하면 이전에 정의되었던 내용들은 모두 새롭게 정의된 내용들로 교체됩니다. 가상함수를 사용해야 하는 이유 컴파일러는 함수를 호출할 때 매우 복잡한 과정을 거치게 됩니다. 그렇기에 컴파일러는 함수를 호출하는 코드는 컴파일 타임에 고정된 메모리 주소로 변환시킵니다. 이것을 정적바인딩이라고 합니다. 일반 함수의 경우 모두 이러한 정적바인딩을 하게 됩니다. 하지만 일반 함수를 오버 로딩하게 되면 정적바인딩으로 인해 문제가 될 수 있습니다. 가상함수가 아닌 보통의 경우 부모 클래스형 포인터로 멤버 함..
-
Languague/C , C++ , C# 2021.02.24[C++] 프렌드(friend) 사용법 (함수, 클래스) 총정리 friend를 사용하는 이유 프렌드를 쓰는 이유는 친구나 동료처럼 수평적인 관계의 클래스간의 멤버 변수를 공유해야 할 경우 주로 쓰입니다. 예를 들면 하나의 클래스에서 다른 클래스의 내부 데이터에 접근 해야할 경우 프렌드를 써서 권한을 주는 경우를 예로 들수 있습니다. 이렇게 friend를 사용하면 자신의 개체뿐만이 아닌 다른 타입의 개체를 접근하는 것이 가능해지기 때문에 코드의 확장이 수월하게 이루어집니다. 단 이렇게 프렌드를 사용할 경우 개발자의 입장에서는 개발에 편리하겠지만 캡슐화 파괴의 주범이 되어 설계가 꼬여버리는 경우가 생길 수 있습니다. 클래스 내부에서만 써야할 멤버들이 다른곳에서 계속 접근을 허용하게 되면 데이터 보호도 어렵고 캡슐화를 지향하는 객체지향적 설계라고 보기 어렵겠죠. 프렌드는 ..
-
Languague/C , C++ , C# 2021.02.23 5[C++] 클래스(Class) 사용법 & 예제 총정리 클래스(Class)란? 클래스(class)는 객체 지향 프로그래밍(OOP)에서 특정 객체를 생성하기 위해 변수와 메서드를 정의하는 일종의 틀이며 내부적으로 객체를 정의하기 위한 상태 값을 의미하는 멤버 변수와 클래스의 동작인 메서드(함수)로 구성됩니다. 객체 지향 프로그래밍에서는 모든 데이터를 객체(object)로 취급하며 이 객체들의 조합으로 프로그래밍을 하는 방식을 의미합니다. C++에서 클래스(class)란 구조체(struct)의 상위 호환으로 이해할 수 있습니다. 구조체와 다른점은 접근 제어 지시자가 추가되었고 함수를 포함할 수 있게 된 점입니다. 접근 제어 지시자 지시자 설명 public 어디서든 접근이 가능 (외부에서도 모두 접근 가능) private 클래스 내부에 정의된 함수에서만 접근 허용..
-
Languague/C , C++ , C# 2021.02.23 1[C++] 템플릿(template) 사용법 & 예제 총정리 템플릿이란? 템플릿은 어린시절에 한번쯤 사용했을 모양자와 같습니다. 모양자에는 다양한 종류의 도형들이 틀로 만들어져 있습니다. 이 틀을 활용하면 누구나 정말 반듯한 네모를 그릴수도 있고 별도 그릴수 있습니다. 템플릿의 생산성이 뛰어난 이유도 이와 같습니다. 정말 완성도 높은 코드를 모양자로 찍어내듯 생성할 수 있기 때문입니다. 특히 소스코드의 완성도를 높인 상태에서 STL처럼 확실하게 검증된 라이브러리를 사용한다면 완성도와 생산성, 두마리 토끼를 한꺼번에 잡을 수 있습니다. 템플릿을 많이쓰면 컴파일 속도가 느려지지만 최신 C++ 개발 트렌드를 따르려면 템플릿은 선택이 아니라 필수입니다. 생산성이 높고 유지보수성이 뛰어난 코드가 당연히 좋은 코드이기 때문입니다. ※ 누군가가 템플릿으로 만들어주거나 만든 템..
-
Languague/C , C++ , C# 2021.02.22 1[C언어/C++] 매크로(define) 함수 사용법 & 예제 매크로 함수란? 매크로 함수는 함수처럼 인자를 설정할 수 있는 매크로를 의미합니다. 매크로 상수와는 달리 매크로 함수 이름에 괄호 와 함께 인자 목록이 주어져 있습니다. 매크로 함수라고 부르지만 단순히 치환하기만 하므로 실제로 함수는 아닙니다. 함수 선언과 비슷하지만 매크로 함수는 인자의 자료형을 신경 쓰지 않습니다. 즉, 자료형의 독립성을 보장합니다. 또 매크로 함수 내부에서 자기 자신을 호출할 수 없다는 특징이 있습니다. 매크로를 정의하는 경우에는 컴파일이 되면 해당 매크로 이름을 가진 것들이 지정해놓은 값으로 변해서 컴파일 됩니다. 매크로 함수 사용법 #define (매크로 함수 이름) (매크로 함수 기능) #define ADD(a,b) a+b //ex #define으로 시작되는 전처리 문장을 매크..