C++

·C++/기타
C++에서는, 한 객체에서 다른 객체로의 대입 연산자 사용이 가능합니다. Mystring s1 {"Frank"}; Mystring s2 = s1;// NOT Assingment // Same as Mystring s2 {s1}; s2 = s1// Assignment C++ 컴파일러는 기본 대입 연산자를 생성합니다. 이는 얕은 복사(shallow copy / memberwise assignment) 입니다. 만약 우리가 사용하는 클래스의 속성 중 raw pointer를 사용한다면, 우리는 깊은 복사(deep copy)를 해야합니다. 이번 포스트에서는 c-style string값의 포인터를 속성으로 지니는 Mystring 클래스를 다뤄보겠습니다. class Mystring { private: char *st..
·C++/기타
연산자 오버로딩이란? C++ 에서 우리는 여러가지 연산자를 사용해왔습니다. 더하기(+), 빼기(-), 나누기(/), 곱하기(*)가 대표적입니다. 사실 이러한 연산자들도 이미 오버로딩이 되어 있는 형태입니다. 오버로딩이 한 함수가 여러 다른 자료형 값을 처리할 수 있게 반복적으로 선언하는 것이였죠? 위의 일반적 연산자들도 integer, double, float 등의 자료형을 모두 다룰 수 있기 때문입니다. 다시 돌아와서 이러한 연산자 오버로딩을 우리가 사용하게 될 때에는, 주로 user defined type들을 built-in type들과 비슷하게 행동할 수 있게 하는 목적입니다. 또한 코드의 가독성을 높일 수가 있습니다. 이러한 연산자 오버로딩은 컴파일러에서 자동적으로 행해지지 않습니다. 한 가지 종..
transform 함수는 헤더에 들어있는 함수로, 벡터, 배열, 문자열과 같은 iterate들에 대해서 범위를 지정하여 해당 범위 내의 모든 데이터를 지정한 함수를 일괄 적용시키는 역할을 합니다. 총 4개의 인자를 받는데요, 순서대로 자료들의 시작 지점, 끝나는 지점, 변환하여 반환받을 지점, 그리고 적용할 함수입니다. string mystr = "hello everyone"; transform(mystr.begin(), mystr.end(), mystr.begin(), ::toupper); cout
Friend는 private 클래스 멤버에 접근권한이 있는 함수 또는 클래스입니다. 여기서 해당 함수 또는 클래스는 접근하고자 하는 클래스의 멤버가 아닙니다. (접근하고자 하는 클래스의 속성 또는 메소드가 아닙니다.) 함수의 경우, 일반적인 함수 일 수도 있고, 혹은 다른 클래스의 멤버 메소드일 수 있습니다. 클래스일 경우, 접근하고자 하는 클래스의 모든 private 멤버들에 대한 접근 권한이 있는 클래스입니다. 한마디로, friend는 클래스의 모든 데이터에 접근 권한을 가진, 클래스 멤버가 아닌 외부 함수 또는 클래스입니다. friend 관계는 friend 키워드를 사용해서 함수 또는 클래스의 정의를 할 때 명시해야 합니다. 또한, friend 관계는 양방향성이 없습니다. A가 B의 friend라고..
Ricky U. Lee
'C++' 카테고리의 글 목록 (2 Page)