이번 포스팅에서는 캐스팅에 대한 내용을 정리해 보려고 한다. 캐스팅에는 암시적 캐스팅과 명시적 캐스팅이 있다. 암시적(Implicit) 캐스팅은 컴파일러가 형을 변환해 주는 것을 말한다. 단, 형 변환이 허용이 되고 프로그래머가 명시적으로 형 변환을 안 할 경우에 해당된다. int number1 = 3; long number2 = number1; // 암시적 캐스팅 명시적(Explicit) 캐스팅은 프로그래머가 형 변환을 위한 코드를 직접 작성하는 것을 의미한다. C++의 캐스팅은 다음과 같은 것들이 있다. 기존의 C 스타일 캐스팅은 아래의 4가지 캐스팅 중 하나를 했었고 컴파일러가 명확하게 잡지 못한다는 문제가 있어서 아래처럼 세분화 하게 되었다. static_cast const_cast dynamic..
Prog. Langs & Tools/C++
이번 포스팅에서는 OOP에 대한 내용을 마지막으로 정리해 보고자 한다. 상속 상속이란 다른 클래스의 특성을 내려 받는 것을 의미한다. 부모 클래스와 자식 클래스로 이루어지며 자식 클래스는 부모 클래스의 멤버변수와 멤버 메서드, 소멸자를 가진다. 또한 자식 클래스는 멤버 변수 및 메서드를 추가할 수 있다. // Animal.h class Animal { public: Animal(int age); private: int mAge; }; // Cat.h class Cat : public Animal { public: Cat(int age, const char* name); private: char* mName; }; // Cat.cpp Cat::Cat(int age, const char* name) : An..
지난 포스팅에 이어서 C++의 개체 지향 프로그래밍 내용을 정리해 보고자 한다. 복사 생성자 복사 생성자는 나와 같은 클래스에 있는 개체를 매개변수로 받는 생성자이다. 아래처럼 선언하고 구현할 수 있다. // Vector.h class Vector { public: Vector(const Vector& other); private: int mX; int mY; }; // Vector.cpp Vector::Vector(const Vector& other) : mX(other.mX) , my(other.mY) { } 같은 클래스에 속한 다른 개체를 이용하여 새로운 개체를 초기화한다. 코드에 기본 생성자가 없을 경우 컴파일러가 자동으로 기본 생성자를 만들어 주는 특성이 있다고 했었는데, 복사 생성자도 마찬가지..
오늘은 C++의 개체지향 프로그래밍 부분을 공부하고 정리한 내용을 포스팅 해 보려고 한다. 양이 많아서 두 번의 포스팅에 나누어서 적어보려고 한다. 개체지향 프로그래밍 개념은 C++에만 있는 건 아니다. Java에도 있고 다른 많은 언어에도 있다. Java로 예를 들면, 다음과 같은 개념들은 자바와 C++ 모두 있는 것들이다. 클래스 개체 생성자 함수 오버로딩 힙에 개체 생성하기 등 하지만 자바에는 없고 C++에만 있는 개념들도 있다. 예를 들면 스택에 개체 생성하기 복사 생성자 소멸자 연산자 오버로딩 등 C++은 OOP와 OOP가 아닌 것들을 섞어서 쓸 수 있다는 장점도 가지고 있다. 자바는 OOP에 관해서 엄격한 편이지만, C++은 C의 후방호환성을 가지고 있어서 유연하다는 장점이 있다. OOP의 핵..
오늘은 C++의 파일 입출력에 대해서 알아보고자 한다. 파일 입출력에서는 fstream이라는 입출력 파일 클래스를 사용한다. 파일 입출력에는 , 조정자(manipulator) 등도 사용이 가능하다. // 읽기 전용으로 파일을 오픈 ifstream fin; fin.open("helloworld.txt"); // 쓰기 전용으로 파일을 오픈 ofstream fout; fout.open("helloworld.txt"); // 읽기와 쓰기 전용으로 파일을 오픈 fstream fs; fs.open("helloworld.txt"); 여기서 나온 open() 이라는 메서드는 각 스트림마다 존재한다. // void open(const char* filename, openmode mode) fin.open("HelloWo..
오늘은 C++에서 참조와 문자열에 대해서 공부한 내용을 정리해 보고자 한다. 참조는 값을 매개변수에 전달하는 방식이다. 이를 할 때 C에서는 포인터를 이용한 연산이 많이 있었다. 성능적인 면에서는 우수했을지 모르지만 연산이 복잡해지고 안전하지 않은 경우가 생긴다는 단점이 있었고, 그래서 자바에서는 포인터를 없애면서 쉽게 참조를 하게 되었다. 하지만 그러다보니 성능적으로 아쉬움이 많이 생겼다. 그래서 C++에서는 포인터도 사용하되 포인터가 필요 없을 때는 훨씬 더 안전하게 참조를 하는 방법도 생겼다. 어떤 데이터를 불러오는 것을 호출이라고 하는데, 참조할 때도 이 개념이 쓰인다. 호출은 크게 두 가지로 나누어서 생각할 수 있는데 값에 의한 호출(Call By Value)과 참조에 의한 호출(Call By ..
C++ 공부를 시작했다. 김포프님의 POCU 아카데미로 C++ 수업을 수강하고 있으며, 해당 진도에 맞춰서 학습한 내용을 블로그 포스팅으로 정리해 볼까 한다. C++을 공부하는 목적은 프로그래머로서 언매니지드 언어를 하나 정도는 잘 쓸 줄 알아야 한다는 책임감(?)과 이 공부를 통해 컴퓨터 구조나 프로그래밍 언어를 컴퓨터가 어떻게 이해하는지, OOP 개념 등에 대해서도 전반적으로 공부를 해 보기 위함이다. 오늘은 그 첫 번째 순서로 입출력에 대한 내용을 다뤄본다. 처음이라 그리 어려운 내용은 아니다. 출력(Output) C++로 Hello World를 출력하는 코드는 다음과 같다. cout > 을 통해서 입력을 한다. 여기서 cout은 출력 스트림, cin은 입력 스트림이다. 출력 부분에서 알아야 할 개..