본문 바로가기

Windows Developer

[C++]STL 표준 C++ 라이브러리 STL은 표준 C++ 라이브러리의 일부분으로 Standard Template Library의 약자 입니다. STL은 사람마다 조금씩 다른 정의를 내립니다. C++권위자인 Scott Meyers는 STL을 "반봅자를 가지고 동장하는 C++ 표준 라이브러리의 일부분"이라고 정의했습니다 STL은 우리가 C++프로그래밍에서 만들어야 하는 여러가지 자료구조 클래스와 알고리즘 등을 미리 만들어 놓은 라이브러리로 반복자라는 놈을 통해서 동작하는 라이브러리입니다. STL의 주요 구성요소 컨테이너(Container) : 객체들을 저장하는 개개체 혹은 클래스(vector, list, string, map) 반복자(iterator) : 컨테이너에 저장된 요소를 순회하고 접근하는 객체 혹은 클래스(추상화) 알고리즘(Algor.. 더보기
[C++]상수 함수 1. 상수 함수의 기본 개념 C++ 에서는 멤버 함수뒤에 const를 붙일수가 있습니다. 일명 상수 함수라고 부르는 문법입니다. 상수함수안 에서는 모든 멤버를 상수 취급합니다. 즉, 멤버 data의 값을 읽을 수는 있지만 변경할 수는 없습니다. 아래 코드를 보세요 왜, 이런 상수 함수가 필요 할까요 ? 많은 책에서는 "안정성 때문에 사용한다" 라고 이야기 하지만 상수 함수가 꼭 필요한 경우가 있습니다. 2. 상수 객체와 멤버 함수 객체를 생성할 때 상수로 만들수가 있습니다. 다음의 경우를 생각해 보도록 하겠습니다. 당연히 A는 상수 객체의 값을 변경하려고 하고 있으므로 에러가 발생합니다. B는 어떨까요 ? 멤버 Data를 직접 접근하는 것이 아니라 Set()이라는 함수를 호출하고 있습니다. 이 경우 Se.. 더보기
[C] call by value와 call by reference call by value : 값의 복사에 의한 함수 호출 #include void main() { int val1 = 10, val2 = 20; int swap(int, int); swap(val1, val2); printf("val1 : %d\n", val1); printf("val2 : %d\n", val2); } int swap(int a, int b) { int temp = a; a=b; b=temp; printf("a : %d\n", a); printf("b : %d\n", b); return 0; } a : 20 b : 10 val1 : 10 val2 : 20 swap함수가 끝났음에도 불구하고 val값은 변하지 않았다. 변수 a와 b에 복사해서 보냈기 때문에 val값은 변하지.. 더보기
[C++]객체지향 프로그램의 4대 특징 1. 추상화(abstraction) 객체들의 공통적인 특징을 뽑아내는 것이다. 즉, 우리가 구현하는 객체들이 가진 공통적인 데이터와 기능을 도출해 내는 것을 의미한다. 즉, "공통의 속성이나 기능을 묶어 이름을 붙이는 것" -> 클래스를 정의하는 과정이 추상화 과정이라고 할 수 있다. 2. 캡슐화(encapsulation) 데이터 구조와 데이터를 다루는 방법을 결합시켜 묶는 것을 말한다. 특정 객체가 독립적으로 역할을 제대로 수행가기 위해 필요한 데이터와 기능을 하나로 묶어 관리한다. 객체가 맡은 역할을 수행하기 위한 하나의 목적을 위해 데이터와 기능을 묶는 것이다. 다른 의미로도 쓰이는데 즉, 데이터는 은닉하고 그 데이터를 접근하는 기능을 밖으로 노출한다는 의미를 나타낼 때 캡슐화라는 용어를 쓴다. -.. 더보기
[C++] 절차지향 vs 객체지향 // 절차지향 코드 #include void startup(int *sp) { *sp = 0; cout 더보기
[C]포인터의 장점 포인터랑 일반 변수와는 달리 메모리 주소를 저장하는 변수를 말한다. 일반적으로 변수는 특정 값을 저장하는데 반해 포인터는 특정 메모리 주소를 저장하며 저장한 메모리 주소에 저장되어 있는 값을 읽어 올 수 있다. 특정 메모리 주소를 저장하고, 주소에 저장된 값을 읽어 올 수 있다는 특징 때문에 포인터는 많은 상황에서 아주 유용하게 사용할 수 있다. 메모리상에 연속적으로 저장되어 있는 배열을 조작할 때에도 포인터를 이용하면 편리하다. 또한 포인터는 저장하는 값의 성질에 따라 크기가 변하는 일반 변수와는 달리 포인터 변수는 타입에 관계없이 항상 4바이트를 유지한다. 크키가 100kb가 넘는 구조체, 클래스를 가리키는 포인터라 할지라도 포인터 자체 크기는 항상 4바이트이다. 그렇기 때문에 함수의 인수로 넘기는 .. 더보기
[C#] 삼항 연산자 조건이 참이면 참이 실행, 거짓이면 거짓이 실행. string park = "천재"; Console.WriteLine(park == "천재" ? "천재" : "바보"); 어떠한 값이 나올지?? 더보기
[C#] New Form 열기 private void button1_Click(object sender, EventArgs e) { Form2 f2 = new Form2(this); //현재 폼의 객체 this를 생성된 폼의 생성자에 넘긴다. f2.Show(); } 더보기