객체란 object 로 상태와 동작을 가지고 있다.
객체의 상태 state는 변수로 설정하고, 동작은 함수로 제작한다.
객체의 사용은 객체를 이용하여 멤버에 접근할 수 있다. 도트 연산자를 통하여 변수에 접근한다, 객체의 포인터에서 접근할 때에는 -> 를 사용하여 접근한다.
클래스 안에서 변수를 설정하는것을 멤버변수라고 한다. 접근제어자에는 private, public 이 있다. 지정자를 아무것도 지정하지 않으면 자동으로 private로 설정한다.
접근자와 설정자가 있는데 접근자는 멤버변수의 값을 반환해주는 역할이고 설정자는 멤버변수의 값을 설정해주는 역할이다. 이들을 선언함으로서 잘못된 값이 넘어오는 것을 방지 할수 있다.
이와 비슷하게 구조체가 있는데, 구조체는 변수만 설정할 수 있고, 모든 변수가 public 으로 선언된다.
초기화 리스트는 생성자를 정의할 때에 작성하여 인스턴스가 생성 될때에 기본적으로 초기화 시켜준다. 이를 활용할 때에는 private에 const 가 맀을때, 레퍼런스 타입이 있을때, 객체 타입이 있을 때에 활용한다.
레퍼런스 변수에 있어서 레퍼런스 변수는 같은 주소를 공유하는 서로 다른 변수이름을 만들어준다고 생각하면 된다.
클래스안에는 생성자를 선언해 주어야 하는데, 생성자를 정의해주지 않으면 컴파일러가 스스로 디폴트 생성자를 만든다.
하지만 생성자가 하나라도 설정 되어있다면 디폴트 생성자가 만들어지지 않는다.
소멸자는 메인 함수가 종료될 때에 클래스를 소멸시키면서 호출된다.
소멸자 또한 생성자와 마찬가지로 정의해 주지 않는다면 디폴트 소멸자를 생성해준다.
:: 연산자
className :: 의 경우는 class 안의 함수, 변수등을 불러온다.
namespace:: 의 경우는 겹치는 함수,변수 이름이 있을 때에 구분해서 사용가능하게 해준다.
:: 의 경우는 전역변수 이름과 지역변수 이름이 같을 때에 구별해서 사용가능하게 해준다.
class 선언과 구현의 구조는 보통위와 같이 설계한다.
구조체와 클래스는 비슷하지만 구조체의 경우는 모두 기본적으로 public 이고, 함수를 구현할 수가 없다.