etc/C++
[TIL] C++ 참조자 / new, delete / class 객체
private K
2021. 5. 14. 21:48
C ++ 참조자의 도입
#include <iostream>
int main() {
int a = 3;
int& another_a = a;
another_a = 5;
std::cout << "a : " << a << std::endl;
std::cout << "another_a : " << another_a << std::endl;
return 0;
}
C ++ 에서는 다른 변수나 상수를 가리키는 방법으로 포인터와는 다른 새로운 방식을 제공하는데 이를 참조자라고 한다.
레퍼런스는 정의 시에 초기화가 되어야 한다. 즉, 반드시 선언할 때 누구의 별명인지 명시를 해야 한다.
레퍼런스가 한 변수의 참조자가 된다면, 더 이상 다른 변수를 참조할 수 없다.
함수 인자로 레퍼런스를 받아서 함수 내에서 레퍼런스의 값을 바꿀 수 있겠다.
레퍼런스를 리턴하는 함수
C++ 의 세계로 오신 것을 환영합니다. (new, delete)
new 와 delete 는 C 에서의 malloc 과 free 에 상응한다.
new delete 를 사용한 메모리 관리는 heap 이라는 공간에서 이루어지며 다른 공간에 저장되는 지역 변수들과는 구별된다. 그러므로, new 로 heap 상에 지정된 것이 아닌 것을 delete 하려고 한다면 에러가 발생할 것이다.
이 세상은 객체로 이루어져 있다.
#include <iostream>
class Animal {
private:
int food;
int weight;
public:
void set_animal(int _food, int _weight) {
food = _food;
weight = _weight;
}
void increase_food(int inc) {
food += inc;
weight += (inc / 3);
}
void view_stat() {
std::cout << "이 동물의 food : " << food << std::endl;
std::cout << "이 동물의 weight : " << weight << std::endl;
}
}; // 세미콜론 잊지 말자!
int main() {
Animal animal;
animal.set_animal(100, 50);
animal.increase_food(30);
animal.view_stat();
return 0;
}
변수는 private 으로 설정하여 응용 개발자가 직접적으로 접근할 수 없게 한다. (private 을 명시해주지 않아도 자동적으로 private 으로 설정되긴 한다.)
class 내부에서는 private 또한 자유롭게 접근 가능하다.
그러한 변수를 의도대로 조정할 수 있기 위해 인스턴스 메소드를 public 으로 설정한다. public 은 명시해주어야 설정되므로 멤버 함수는 public 으로 설정하는 것이 맞을 것이다.
반응형