본문 바로가기

C++ 기초 1

(48)
[C++] 2-5 클래스 객체 포인터 설명 및 예제 클래스 객체 포인터 일반 변수처럼 클래스 객체를 포인터 형태로 선언할 수 있다. 클래스 포인터를 이용하여 특정 객체의 멤버들을 참조하기 위해서는 도트 연산자(.) 대신에 화살표 연산자 (->)를 사용한다. 클래스 객체 포인터는 클래스 변수나 클래스 배열에 할당된 메모리 영역의 시작 주소를 대입하여 초기화한다. 예제 1 #include #include //문자열 처리 헤더 파일 using namespace std; class child { private: char name[10]; int age; int height; public: void set(char* n, int a, int h); void output(); }; void child::set(char* n, int a, int h) { strcpy..
[C++] 2-4 클래스 배열 초기화 설명 및 예제 클래스 배열 일반 변수처럼 클래스 object도 배열로 선언할 수 있다. 클래스 배열을 선언하고 사용하는 방법은 일반 배열과 동일하다. 클래스 배열을 사용하기 위해서는 클래스 배열명과 첨자를 이용하면 된다. 클래스 배열명[첨자] 예제 #include using namespace std; class myclass { private: int a, b; public: void set(int i, int j) { a = i; b = j; } int sum_return() { return a + b; } }; int main() { myclass ob[3];//클래스 배열의 선언 int n; for (n = 0; n < 3; n++) ob[n].set(n, n + 2);//멤버 함수 호출 for (n = 0; n..
[C++] 2-3 클래스 변수 초기화 / 멤버 변수 초기화 클래스 변수 초기화 클래스(class)의 멤버 함수를 호출할 때 매개변수를 사용하여 데이터 멤버들의 값을 초기화할 수 있다. 아래 예제로 자세한 내용을 참고할 수 있다. #include using namespace std; class score { private: char* name; int kor; int eng; double ave; public: void sub(char* n, int k, int e); void sum_ave(); void output(); }; void score::sub(char* n, int k, int e) { name = n; kor = k; eng = e; } void score::sum_ave() { ave = double(kor + eng) / 2.0; } void ..
[C++] 2-2 클래스 멤버 함수의 자동 인라인 멤버 함수의 자동 인라인 보통 멤버 함수의 정의가 짧은 경우에는 클래스 내에 직접 멤버 함수를 정의하게 된다. 멤버 함수를 클래스 내부에 정의하면 이것은 자동적으로 인라인 함수가 된다. 클래스 내부에 멤버 함수를 정의하면 예약어 inline을 입력할 필요가 없다. 참고로 예약어 inline을 사용해도 오류가 발생하지 않는다. 빠르게 작동해야 하는 짧은 함수가 많은 경우 클래스 내부에 정의해서 자동 인라인화 하는 게 좋다. 예제 #include using namespace std; class test { private: int i,j; public: void input(int a, int b) { i = a; j = b; }//자동 인라인 void output() { cout
[C++] 2-1 클래스(Class) 사용법 및 예제 클래스 (Class) 클래스는 배열처럼 많은 데이터를 처리하기 위해 사용된다. 배열은 동일한 데이터형을 갖는 변수들의 집합이지만 클래스는 다양한 데이터형을 갖는 변수들의 집합이다. 이때 클래스 내의 변수들을 데이터 멤버라 부른다. 또한, 클래스의 멤버로 함수를 사용할 수 있는데, 이를 멤버함수라고 부른다. 멤버 함수는 클래스 내의 데이터 멤버를 참조 및 처리하기 위해 활용된다. class라는 예약어로 컴파일러에게 알려주어 클래스를 정의한다. 클래스 이름은 templete을 나타내는 이름으로 클래스의 형태를 컴파일러에게 알려준다. 클래스 이름은 변수가 아니라 일종의 데이터형이며 임의로 정할 수 있다. 클래스에 포함되는 변수를 데이터 멤버라 부르고, 함수를 멤버 함수라고 부른다. 클래스를 정의할 때 각 멤버..
[C++] 1-13 스토리지 클래스 (auto, register, static, extern) 스토리지 클래스 유형 지역 변수와 전역 변수는 스토리지 클래스(storage class)의 유형에 따라 세분화되며, 이들 각 변수들은 메모리상에서 존속하는 기간이 다르다. 지역변수: auto, register, static 변수 전역변수: static, extern 변수 변수의 종류 예약어 기억 장소 존속 기간 변수의 구분 선언 위치 auto 변수 auto 스택(stack) 영역 일시적 지역 변수 함수 내부 register 변수 register register 영역 일시적 지역 변수 함수 내부 내부 static 변수 static static 영역 영구적 지역 변수 함수 내부 외부 static 변수 static static 영역 영구적 전역 변수 함수 외부 extern 변수 extern static 영역 ..
[C++] 1-12 함수의 지역 변수 / 전역 변수 설명 및 예제 개요 변수는 선언된 위치에 따라 지역 변수 (local variable)와 전역 변수 (global variable)로 나눌 수 있다. 지역 변수는 함수 내부에서 선언되며 선언된 함수 내부서만 사용되고 다른 함수에서는 사용할 수 없다. 반면 전역 변수는 함수 외부에서 선언되며 모든 함수에서 사용할 수 있다. (참고로 C++에서 변수 선언은 함수의 시작 부분에 선언하는 것이 바람직한 프로그램 작성법이라 할 수 있다.) 지역변수 지역 변수는 함수 내부에서만 사용되기 때문에 동일한 이름의 변수가 서로 다른 함수의 내부에서 사용되더라도 충돌이 발생하지 않는다. 따라서 함수를 이용해서 프로그래밍하는 경우, 지역 변수를 사용하면 함수의 독립성이 유지된다. 만일 동일한 이름의 변수가 지역 변수와 전역 변수로 동시에 ..
[C++] 1-11 함수의 디폴트 매개변수 함수의 디폴트 매개변수 C++에서는 함수의 매개변수를 디폴트(default) 값으로 지정할 수 있다. 디폴트 매개변수란 함수의 원형 선언 및 함수의 정의에서 매개변수에 값을 지정해 두는 것을 말한다. 함수의 매개변수를 디폴트 값으로 지정해 두면 함수 호출 시 매개변수 값을 넘겨주지 않아도 디폴트로 지정된 매개변수 값이 피 호출 함수로 넘어가게 된다. 예제 1 #include using namespace std; void sub(int a = 10, int b = 20, int c = 30);//인수의 디폴트 값 지정 int main() { sub();//매개변수 모두를 디폴트 값으로 지정 sub(5);//매개변수 b, c를 디폴트 값으로 지정 sub(5, 15);//매개변수 c를 디폴트 값으로 지정 su..
[C++] 1-10 함수의 오버로딩 설명 및 조건 함수의 오버로딩 C++언어에서는 동일한 함수명을 갖는 여러 함수가 존재하더라도 함수를 정의할 수 있다. 인수의 개수와 인수의 데이터형을 검사해서 함수를 호출하기 때문에 같은 이름이더라도 동일한 이름의 함수를 정의할 수 있다. 이때 주의할 점은, 오버로드된 함수들은 반환하는 값의 데이터형이 같아야 한다. 그 이유는 반환하는 데이터로 오버로드되는 함수들을 구분하는 것이 아니라 각 함수가 사용하는 인수의 개수와 인수의 데이터형으로 구분하기 때문이다. int sub(int a, int b); char sub(int a, int b); 위와 같이 안수의 개수와 데이터형은 동일한데 반환되는 데이터형이 다르면은 오류가 발생된다. 예제 1 #include using namespace std; int add(int, i..
[C++] 1-9 인라인 함수 장점과 단점 인라인 함수란? 인라인 함수는 일반 함수처럼 호출하여 사용하는 것이 아니라 호출한 위치의 라인상에 직접 복사하여 실행하게 된다. 그래서 인라인 함수는 일반 함수를 호출하였을 때처럼 실행한 뒤 다시 복귀하는 시간이 소모되지 않으므로 실행 속도가 더 빠르다. 하지만 인라인 함수의 코드가 길고 자주 호출되는 경우에는 프로그램 자체의 크기가 매우 커지게 된다. 그러므로 짧은 코드로 이루어진 함수들을 인라인 함수로 사용하는 것이 좋다. 인라인 함수를 사용하기 위해서는 inline이라는 예약어를 사용해야 한다. 그리고 인라인 함수는 반드시 호출 전에 정의되어 있어야만 main() 함수 내에서 inline으로 전개된다. 예제 #include using namespace std; inline int min(int a,..