본문 바로가기

분류 전체보기93

[ C++ ] C/ C++ 입출력 함수별 속도 비교 알고리즘 문제를 풀 때 참고하자. - std::ios::syne_with_stdio(false)는 cin과 cout의 속도를 과속하는 반면에 C 표준 입출력 사용이 불가능하기에 현업에서는 사용하지 말자. - endl; 대신에 개행문자 '\n' 을 사용하면 flush가 불필요하게 호출되지 않아 속도가 줄어든다. 2019. 9. 20.
[ C++ ] 객체 배열과 객체 포인터 배열 / this 포인터 객체 배열과 객체 포인터배열은 구조체 배열과 구조체 포인터배열와 유사하다. 객체 배열은 다음과 같은 형태로 선언을 한다. A arr[10]; A는 클래스 이름이다. 그럼 객체 배열을 선언시 생성자가 어떻게 동작하는지 살펴보면 위와 같은 결과를 볼 수 있다. 즉, 위 소스코드의 경우에는 arr가 10개의 객체를 담는 객체 배열이라고 볼 수 있다. 객체 포인터 배열은 객체의 주소를 담는 배열이다. 선언은 다음과 같은 형태로 하면 된다. A * arr = new A[10]; 위를 보면 각 인덱스에 객체가 생성된 것을 확인할 수 있다. this는 객체 자신을 가리키는 포인터이다. 아래의 소스코드를 보면 알 수 있다. GetPoint를 통해서 b가 a의 주소값을 얻은 걸 확인할 수 있다. 이렇게 this는 객체 .. 2019. 9. 20.
[ C++ ] 구조체와 클래스의 차이점 - 구조체에 선언된 변수와 함수에 별도의 접근제어 지시자를 선언하지 않으면, public으로 선언된다. - 클래스에 선언된 변수와 함수에 별도의 접근제어 지시자를 선언하지 않으면, private으로 선언된다. 위 내용이 구조체와 클래스의 유일한 차이점이라고 Effective STL에 나와있다. 2019. 9. 20.
[ C++ ] 파일 분할 하나의 프로그램을 만들 때 하나의 소스파일에 모든 내용을 적진 않는다. 특히 C++에서는 클래스의 선언과 정의를 분리하는 경우가 많다. 클래스의 선언(declearation)은 클래스를 구성하는 외형적인 틀을 보여준다. 예로 들어서 거북이에 관한 클래스가 있다고 하자. ( 글쓴이는 거북이를 많이 좋아한다. ) #ifndef __TURTLE_H__ #define __TURTLE_H__ namespace TURTLE_CONST { enum { NAME_LEN = 20, SPEED = 100 } } class Turtle { private: char turtle_name[TURTLE_CONST::NAME_LEN]; int speed; public: void InitMembers(char.. 2019. 9. 20.