Featured image of post 1. C++의 특징

1. C++의 특징

C++ 기본 문법

# C++언어의 주요한 설계 목적

  • 캡슐화(클래스) : 데이터를 캡슐로 싸서 외부의 접근으로부터 보호(정보은닉), 멤버 변수와 멤버 함수 이용
    private 변수의 초기화, 조회 등에는 생성자 함수, public 함수 등을 이용하여 private에 접근한다.
  • 상속 : 객체가 자식 클래스의 멤버와 부모 클래스에 선언된 모양 그대로 멤버들을 가지고 탄생한다. 객체간 IS-A 관계가 성립되어야 한다. 재사용성에 강점이 있다.
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
class Person
{
	public:
    	void sleep(){};
};


class Student : public Person //Student 는 Person의 특징을 상속받는다.
{
	public:
    	void study(){};
};

Student s1;
s1.sleep(); //실행 가능

# C++의 특징

# 함수중복(Function Overloading) - 다형성

매개변수 정보가 다르면 함수 이름을 중복해서 선언할 수 있다.
다형성 : 하나의 기능이 경우에 따라 다르게 보이거나 다르게 작동한다. 연산자 중복, 함수 중복, 함수 재정의(overriding)

1
2
3
4
5
6
7
8
int sum(int a, int b){
	return a+b;
}


int sum(int a, int b, int c){
	return a+b+c;
}

# 디폴트 매개 변수(default parameter)

함수를 정의할 때 매개변수에 기본값을 지정할 수 있다. 이는 overloading과도 이어진다.

1
2
3
4
5
6
7
8
9
int sum(int a = 0, int b = 10)
{
	return a+b;
}


//메인에서 호출시
sum(10); // return 20
sum(10,20); // return 30

# 참조와 참조 변수(reference)

이름을 지니는 공간(변수에 할당된 공간)에 별명을 부여하는 것.

이는 참조에 의한 호출을 위해 사용된다.

1
2
3
4
5
int a = 10;
int &ref = a; //자료형 &레퍼런스명 = 대상;

Student kim; //클래스 이름과 객체
Student &lee = kim;

# 참조에 의한 호출(call-by-reference)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
//참조 변수 활용
void swap(int &a, int &b)
{
	int tmp = a;
	a = b;
	b = tmp;
}

void main(void)
{
	int x = 10, y = 20;
	swap(x, y);
}

# new/delete 연산자

  • 동적할당 / 해제 : 메모리를 동적으로 필요한 만큼만 상황에 맞게 할당하고 해제하는 것.
  • 메인 메모리에서는 불가하고 Heap이라는 공간에서 사용 가능, 메인 메모리에 포인터가 있어야함.
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
char *p = new char[4]; //메모리 공간 할당
strcpy(p, "kim");
delete [] p; //메모리 공간 해제

int *p1 = new int;
*p1 = 10;
delete p1;

/*
일반적으로는 new char[4]와 같이 고정적으로 할당하지 않고
입력받은 문자열의 len을 받아와 그 값을 할당한다.
*/

# 연산자 재정의

기존 C++ 연산자에 새로운 연산을 정의할 수 있다.

# 제네릭 함수와 클래스(일반화)

데이터 타입에 의존하지 않고 일반화시킨 함수나 클래스 작성 가능

Licensed under CC BY-NC-SA 4.0
Hugo로 만듦
JimmyStack 테마 사용 중