일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- namespace c++
- 백준#1976#dfs#bfs#그래프탐색#그래프#알고리즘#코딩#여행가자#백준여행가자
- enum enumclass
- 백준
- 선택정렬#알고리즘#C++#알고리즘 공부
- topolgy algorithm
- 윤성우 열혈 c++
- 코린이공부중....
- class
- 백준 14567
- 기술 면접
- inline c++
- C++ 이름공간
- 백준 분리집합
- 참조에 의한 호출
- class c++
- 분리집합
- inline사용법
- inline 함수
- 값에 의한 호출
- disjoint set #분리집합 # 분리집합 c++ #상호배타적집합 #알고리즘공부 #c++
- 4195
- c struct 란
- enum c++
- C++
- 2252 c++
- enum class
- 코딩공부
- this포인터
- 선수과목
- Today
- Total
목록분류 전체보기 (32)
조던을좋아하는코린이
const를 사용하면 초기에 변수가 선언과 동시에 초기화가 되어야한다. const를 사용한 함수 선언 역시 const로 선언된 변수를 받아야한다. const를 사용하면 좋은 점은 코드의 안정성을 높일 수 있다. 바이너리 코드란? 바이너리 코드는 컴퓨터가 인식할 수 있는 0과 1로 구성된 이진코드를 의미한다. cpu가 이해할 수 있는 언어 기계어란? - 0과 1로 이루어진 바이너리 코드이다. (바이너리 코드 != 기계어) - 기계어가 이진코드로 이루어진것, 모든 이진코드가 기계어인것은 아니다. - 기계어는 특정 언어가 아니다. 제조사에서 cpu만들 대 해당 cpu에서 사용하는 명령어 집합을 공개한다. 이것을 기계어라고 부른다. - 같은 회사의 cpu라도 버전별로 명령어를 다르게 사용할 수 있다. 바이트 코..

이전의 글에서 묵시적 변환과 생성자의 내용에서 int num = 3; 의 선언을 하게 되면 => int num(3); 으로 변환된다는 것을 배웠다. [복사 생성자] 글에서 묵시적 변환에 대해서 설명참고 그러면 왜 깊은 복사와 얕은 복사가 나오게 되었을까? 배열이나, 변수들을 사용할 때 동적할당이라는 것을 배운다. 메모리의 stack영역이 아닌 heap영역을 이용하게 되는것을 동적할당이라고 하는데 메모리의 낭비를 방지할 수 있다. 동적할당시에 중요한 것은 컴퓨터의 실행 시간 동안 사용이 가능하다는 점이다 따라서 실행 시간이 종료되면 메모리 공간을 할당 받은 것을 되돌려 줘야한다. 먼저 간단한 동적할당의 예를 보겠다. 32행 => 포인터형 변수 num은 int형으로 동적할당된 메모리 공간을 가리킨다. 33행..

c언어의 구조체와 비슷한 형태로 이전에 사용했던 자동차 구조체의 예를 이용하여 클래스를 학습하겠다. 클래스의 장점은 대학시절에 배웠던 정보은닉과 상속이 가능하다는 점으로 기억한다.... 윤성우 열혈 c++의 책을 기반으로 자세히 학습해보겠다!! 먼저, struct(구조체)와 다르게 class는 main에서 변수 선언 후에 바로 초기화가 불가능하다 struct stCar{ }; stCar structCar = {"run99",100,0}; 으로 초기화가 가능하였다. 하지만 클래스에서는 클래스 내에 선언된 변수는 클래스 내에 선언된 함수를 통해서만 접근이 가능하다! 따라서 아래의 예를 보자. 24번 줄의 빨간줄 즉, struct와 같이 초기화가 가능하지 않다. 오른쪽 그림은 struct 24라인을 보면 문제..

int num = 2; 라고 선언이 되면 묵시적 (자동적)으로 int num(2) ;로 변경된다. 이전에 코드에서 묵시적인 형변환으로 인해서 복사 생성자를 선언하지 않아도 묵시적 변환이 발생하여 객체간의 대입이 가능했다. 이런 묵시적 변환을 발생하지 않게 하려면 explict 키워드를 사용하면 된다. 예를 들어 결과는 묵시적 변환으로 인해 다음과 같이 된다. 40행에 explicit를 선언하면 ( 묵시적 변환을 허용하지 않겠다 ) 49행에 오류가 발생한다. 따라서 묵시적 변환된 코드를 직접 입력해 줘야한다. 다음의 코드를 보자 53행에서는 멤버 대 멤버간의 대입이 이루어진다. 이때 복사 생성자가 호출되기 때문에 문제 없이 3이 출력되는것을 확인할 수 있다.

참조자를 이용해서 간단하게 int형 타입을 이용한 변수를 선언하고 참조해보았다. int num =20; int &ref = num ; 이런식으로 말이다 하지만 아래의 예시는 위의 방식 말고도 다르게 변수를 선언하는 방법을 보여준다. int num1(20); int &ref(num1); 으로 말이다. 클래스에서의 예를 보겠다. 이를 보면 25,26에서 sim3 객체를 생성하고 10,20으로 초기화를 진행 그리고 sim4객체를 만들었고 이를 SoSimple sim4(sim3); 을 진행하였다. 이렇게 되었을 때 멤버 변수가 복사되어 sim4는 sim3과 같은 멤버 변수 값들을 가지게 된다. 원래 클래스에서 객체를 생성하게 되면 생성자가 불려야 한다고했다. sim4의 생성자는 존재하지 않지만 생성자 호출의 관..

This 포인터란? : 일단 포인터라는 느낌이 든다.... This 포인터는 객체가 자기 자신을 가리키는 용도를 말한다. 아래의 예제를 보면 쉽게 이해가 가능하다.!! 먼저 포인터에 대해서 살펴보면 다음 번째 그림을 보면 쉽게 이해가 가능하다. 1) 2 ) 이제 본격적으로 this포인터를 살펴보자.. 24번에서 SoSimple 객체를 선언과 동시에 초기화가 진행되었다. 25번에서 Sosimple형의 포인터 변수 ptr1을 선언하였고 ptr1은 sim1.GetThisPointer()에 의해 반환되는 포인터값을 저장하게 된다.(가리킨다) 즉 여기서 sim1의 주소가 ptr1변수에 저장이 된다. 30,31,번을 출력하면 다음과 같은 결과를 얻는다. 31번에서는 ptr1이 가리키고 있는 객체의 sho..

클래스를 알기 전에 c 언어의 구조체에 대해서 알고 간다면 1. 구조체란 struct를 사용하여 연관 있는 데이터를 묶는 장치를 말한다. 사용 이유는 데이터를 하나로 묶으면 프로그램의 구현 및 관리가 용이하기 때문이다. *Struct에서 public,private,protected을 class와 같이 선언이 가능! 하지만, Default가 public이라는 점이 다르다. cf) Class에서는 Default가 private이다. 자동차와 관련된 함수들이 전역 함수로 선언이 되어있다. 이를 구조체 내부에 선언하게 된다면 다음과 같이 사용할 수 있다. 함수를 호출할 때 특정 값을 입력으로 넣어주는것이 아니라 구조체 내에 함수가 선언되어있어 구조체 내에 선언된 변수에 직접접근하여 호출!. +++ 하나더 !! ..

inline 함수의 의미를 보면, in : 내부 line : 프로그램 코드라인 즉, "프로그램 코드라인 안으로 들어가 버린 함수"가 된다. 1. 매크로 함수 c언어에서 매크로 함수가 있다. => 실행 속도가 빠르다. 즉 함수가 쓰일 때 마다 함수 호출이 아니기 때문이다. 그 자리에서 바로 함수 내용을 실행. 왼쪽을 실행하게 되면 실제로는 오른쪽 처럼 처리가 되는것이다. 2. inline 함수 C++에서 이런 기능이 inline 함수가 대체 해준다. 함수 선언 앞에 inline을 붙이면 된다. * 매크로를 이용한 함수의 인라인화는 전처리기에 의해서 처리 * inline을 이용한 함수의 인라인화는 컴파일러에 의해서 처리 위에서 보면 매크로를 이용한 방법에서는 데이터 타입이 정해져 있지 않다는 장점?이 있다...