본문 바로가기

C++24

[C++]문자열 문자열 #include #include using namespace std; int main(){ char a[10]={'a','b','c','d'}; char b[]={"hi my name is"}; cout 2023. 4. 29.
[C++]this 포인터 멤버함수 내에서는 this라는 이름의 포인터를 사용할 수 있는데, 이는 객체 자신을 가리키는 용도로 사용되는 포인터이다. #include #include using namespace std; class SoSimple{ private: int num; public: SoSimple(int n) : num(n){ cout 2023. 3. 4.
[C++]객체 배열과 객체 포인터 배열 객체 기반의 배열은 다음의 형태로 선언한다 SoSimple arr[10]; 이를 동적으로 할당하는 경우에는 다음의 형태로 선언한다. SoSimple *ptrArr=new SoSimple[10]; 위의 형태로 배열을 선언하면, 열개의 SoSimple 객체가 모여서 배열을 구성하는 형태가 된다. 하지만 배열을 선언하는 경우에도 생성자는 호출이 된다. 단, 배열의 선언과정에서는 호출할 생성자를 별도로 명시하지 못한다.(생성자에 인자를 전달하지 못한다). 즉, 위의 형태로 배열이 생성되려면 다음 형태의 생성자가 반드시 정의되어 있어야 한다. SoSimple() {....} 그리고 배열선언 이후에 각각의 요소를 원하는 값으로 초기화시키길 원한다면 일일이 초기화의 과정을 별도로 거쳐야 한다. 예를 통해 자세히 살펴.. 2023. 3. 1.
[C++]멤버 이니셜라이저(Member Initializer)를 이용한 멤버 초기화 클래스 안에 여러 개의 객체를 멤버로 지니고 있는 클래스의 같은 경우 객체가 생성되면 객체 안에 있는 여러 개의 객체가 함께 생성된다.(여러 개의 객체를 멤버로 지니고 있는 클래스를 상위객체 상위객체 안에 포함되어 있는 객체들을 하위클래스라 칭하겠다.) 여기서 상위 객체를 생성하는 과정에서 여러 개의 하위클래스의 생성자를 통해 하위객체를 초기화할 수 있다. 이것을 멤버 이니셜라이저를 이용한 멤버 초기화라 하는데 예시를 통하여 자세히 살펴보겠다. Point.h #ifndef __POINT_H_ #define __POINT_H_ class Point{ private: int x; int y; public: Point(const int &xpos, const int &ypos); int GetX() const.. 2023. 2. 27.
[C++]생성자(Constructor)와 소멸자(Destructor) 우리는 객체를 생성할 때 정보은닉을 목적으로 멤버변수들을 private으로 선언했다. 따라서 멤버변수를 초기화하기 위해서는 따로 함수를 정의하고 호출하였다. 하지만 '생성자'를 이용하면 객체도 생성과 동시에 초기화할 수 있다. 생성자를 이해하기 위해 다음 예를 살펴보겠다. class SimpleClass { private: int num; public: SimipleClass(int n)//생성자(constructor) { num=n; } int GetNum() const { return num; } }; 위 코드를 살펴보면 SimpleClass함수는 클래스의 이름과 이름이 동일하고 반환형이 선언되어 있지 않으며, 실제로 반환하지 않는다. 이러한 유형을 '생성자(constructor)'라고 하며 객체 생.. 2023. 2. 25.
[C++]캡슐화 정보은닉과 캡슐화는 객체지향 기반의 클래스 설계에서 가장 기본이면서도 가장 중요한 원칙이다. 다음 예제는 학원 조교가 선생님의 수업준비물을 챙기는 물품을 정리한 코드이다. 이 예제를 통하여 캡슐화를 설명하겠다. #include using namespace std; class laser{ public: void take() const {cout 2023. 2. 19.