[프로그래밍 언어] C/C++ (2) - 사용

._.·2021년 6월 9일
0

프로그래밍 언어

목록 보기
3/4

C와 C++ 사용할 때 기본적으로 숙지할 기본적인 것들

📋 변수

  • 선언과 정의

    • 선언 : 컴파일러가 참조할 식별자의 이름을 알리는 것
      ex) extern int a - 전역변수의 선언

    • 정의 : 함수가 호출되거나 변수를 사용할 때 생성된 코드를 참조하여 식별자와 이름으로부터 코드 생성
      ex) int a; int b = 10; - 변수의 정의

  • static (정적변수) : 전역변수를 static으로 선언할 시, 외부에서 extern으로 접근 불가. 즉, 선언한 파일내에서만 사용 가능

  • const : 값과 주소를 변경할 수 없도록 만들어 준다. 변수를 상수로 만드는 것

  • auto 타입 : 컴파일러가 초기화 값에 따라 알아서 데이터 타입을 정해주는 키워드 (타입 추론- type inference)

    • &, *와 함께 사용하여 복사가 아닌, 주소를 가리키거나 참조를 하는것
  • struct (구조체) : 하나 이상의 변수를 그룹 지어서 새로운 자료형을 정의하는 것

  • union (공용체) : 모든 멤버 변수가 하나의 메모리 공간을 공유. 따라서 한번에 하나의 멤버변수밖에 사용못함

  • enum (열거체) : 새로운 타입을 선언하면서, 동시에 해당 타입이 가질 수 있는 정수형 상수값도 같이 명시할 수 있는 타입

  • :: (범위 지정 연산자) : a::Print() 호출시, a영역에 있는 Print()가 호출, b::Print() 호출시, b영역에 있는 Print가 호출, 그냥 :: 호출시


📋 포인터와 레퍼런스

👉 포인터 변수

: 포인터는 어떤 변수의 주소값을 저장하는 변수이다.
포인터를 선언하기 위해서는 변수명 앞에 *을 붙여야 하며, 어떤 변수의 주소값을 얻기 위해서는 &를 붙여야 한다.

int main(){
	int* point = NULL; // 선언
    int var = 10;
    
    point = &var; // 정의
}

위의 코드를 보았을 때, &var과 point의 값은 동일하다.

👉 레퍼런스

: 레퍼런스는 어떤 변수를 참조하는 변수이다.

int main(){
    int var = 10;
   	int& ref = var;
    
    cout << ref << endl; 
    
    return 0;
}

실행하면 10이 출력된다. var과 ref는 같은 값을 가지며, 주소값을 출력해보아도 동일한 값이 출력된다. 즉, 어떤 변수의 별명인 셈이다.
이러한 레퍼런스의 이용은 함수호출에 주로 사용된다. (call by reference)


📋 오버라이딩(Overriding) 과 오버로딩(Overloading)

👉 오버라이딩 (Overriding)

: 함수를 자식 클래스가 재정의할 수 있게 허용하는 것

class car { // 부모 클래스
public:
	void func() {
		cout << "this is car" << endl;
	}
};
class bus : public car { // 자식 클래스
public:
	void func() { // 부모 클래스와 같은 함수 정의
		cout << "this is bus" << endl;
	}
};

int main() {
	car a;
	bus b;
	
	a.func();
	b.func();

	return 0;
}

위 코드를 실행해보면, 자식 클래스의 func함수가 변경된것을 확인할 수 있다. 따라서, 오버라이딩이란 이러한 상황처럼 자식 클래스의 내용을 변경, 재정의 할 수 있도록 허용한 것을 의미한다.

👉 오버로딩 (Overloading)

: 함수명은 같으나, 인자의 개수 혹은 타입이 다른 함수를 허용하는 것

void func(void) {
	cout << "this is no argument" << endl;
}

void func(int i) {
	cout << "this is integer argument" << endl;
}

void func(char c) {
	cout << "this is charactor argument" << endl;
}

int main() {
	func();
	func(1);
	func('a');

	return 0;
}


위 코드를 실행하면 다음과 같은 실행결과가 출력된다.
즉, 함수에 전달된 인자가 무엇이냐에 따라 알아서 함수가 호출되는 것이다. 이렇듯 인자의 종류와 개수가 다르다면 같은 이름의 함수를 사용하는 것이 허용된다는 것을 알수있다.

0개의 댓글