C++ - 내용 정리 2

파이톨치·2022년 5월 31일
1

대학수업

목록 보기
28/32

정리할 내용

포인터란 무엇인가?
동적 배열은 무엇인가? ~~
~~상속은 무엇인가?

동형은 무엇인가?
가상 함수는 무엇인가?

NameSpace는 무엇인가?
분할 컴파일이란 무엇인가?
STL은 무엇인가?

포인터

많이들 어려워 하는 내용이다.

double *p;

p는 더블에 대한 포인터 변수이다.

포인터는 이런식으로 가리킨다. 포인터가 가지는 값은 주소이다.

int v1 = 5;
int *p1;
p1 = &v1;

다음과 같이 쓴다. 값을 참조하기 위해서는 *p로 사용한다.

포인터를 사용하면 함수에서 값에 대해 접근할 수 있기 된다.

포인터끼리 산술적인 연산도 된다. 2차원 배열에서 조금 헷갈릴 수 있으니 보자.

int a[5][5];

// *a[1] 은 2번째 열 1번째 원소
// *a[1] + 2 는 2열 3번째 원소
// *a는 a[0][0]
// **a 는 a[0][0]의 값

동적 배열

위에서 한 내용의 심화내용이다.

int *p;
p1 = new int;

이름 없는 변수를 만들었다.
여기에 값을 조금 부여해주면 다음과 같이 써준다.

*p = 42;

그러면 p가 42를 가리킨다.

클래스에 대해서도 쓸 수 있다.

Myclass *mcPtr;
mcPtr = new MyClass(32.0, 17);

지울 수도 있다.

delete p;
p = NULL;

이것들을 이용해 동적인 배열을 만들 수 있다.

double* d;
d = new double[10];

//code 

delete [] d;

다음과 같이 포인터를 사용해서 동적인 배열을 만들었다.

추가적으로 화살표 연산자가 있다.

MyClass *p;
p = new MyClass;
p->grade = "A";
// same to (*p).grage = "A";

this라는 것도 있다.

cout << stuff;
cout << this -> stuff;

상속

https://blog.hexabrain.net/173

상속은 다음과 같이 해준다.

class Bird{

};

class Chicken : public Bird {


};

동형

동형은 오버로딩일 동형의 예시이다.

가상함수

class Person{
public:
	virtual void speak(){
    	cout << "Person \n";
    }
};

class student : public Person{
public: 
	virtual void speak() {
    	cout <<"Student \n";
    }
}

이렇게 써야 부모 클래스것이 호출되지 않는다.

profile
안알랴줌

0개의 댓글