본문 바로가기
반응형

객체지향7

[C++] 얕은 복사(Shallow copy) VS 깊은 복사(Deep copy) 얕은 복사 (Shallow copy) 얕은 복사의 경우 데이터의 주소를 복사하는 것입니다. 다음 아래 그림을 보면 이해하기 쉽습니다. x = y를 통해 y의 주소값을 x에 넣습니다. 그렇기 때문에 *y의 값이 변하면 마찬가지로 *x의 값이 *y와 같게 변합니다. 깊은 복사 (Deep copy) 깊은 복사의 경우 데이터 값을 완전히 복사하는 것을 말합니다. 그렇기 때문에 복사된 값과 이전의 값은 완전히 독립적으로 됩니다. 얕은 복사 예시코드 다음은 얕은 복사에 관한 예시코드입니다. #include #include #include class Car{ //class declaration public: //members accessible from outside Car(char* name){ //default .. 2023. 10. 29.
[C++] LHS변수와 RHS변수/const 활용(pointer const etc..) LHS와 RHS LHS는 left-hand-side 표현입니다. RHS는 right-hand-side 표현입니다. 예를 들어 x = 10이라고 할 때 LHS : x RHS : 10 이렇게 됩니다. C++ 메모리 모델안 basic 각각의 변수는 주소를 가집니다. &x (only in RHS) : 변수 x의 주소를 리턴합니다. &x : 0 &y : 4 x (in RHS) : 변수의 주소안 값을 할당합니다. x는 16을 리턴합니다. y는 99를 리턴합니다. x (in LHS) : RHS 값을 변수의 주소에 저장합니다. "x = 7" x주소 0에 7이 저장됩니다. "y = 88" y주소 4에 88이 저장됩니다. 위를 표시하면 다음 아래와 같이 됩니다. 포인터 (Pointers) 포인터 값은 주소를 가리킵니다. .. 2023. 10. 28.
[C++] 네임스페이스(Namespace)를 사용하는 이유 네임스페이스(Namespace) 네임스페이스는 특정한 식별자(함수, 변수, 클래스)를 포함하는 코드지역을 뜻합니다. C++에서는 같은 식별자를 여러 번 선언/정의할 수 없습니다. 그렇지만 우리가 식별자를 여러번 사용하고 싶을 때가 있는데요. 네임스페이스는 식별자를 여러번 선언/정의하는 것을 허용합니다. 네임스페이스는 특정한 식별자를 가져야 합니다. 하지만, 식별자는 네임스페이스 전체에서 동일한 이름을 가질 수 있습니다. ★ main 함수는 네임스페이스가 될 수 없습니다. ★ 아래 예시코드를 보면서 더 구체적으로 설명하겠습니다. 예시코드 #include namespace ns1{ int value = 3; } namespace ns2{ std::string value("Hello World"); } int.. 2023. 10. 28.
[C++] 클래스 안에서의 명명 규칙 클래스 이름은 파스칼(Pascal) 표기법을 사용해라 클래스 이름의 경우 파스칼 표기법으로 나타냅니다. Bad class Cat {...}; class Person {...}; class SeoulCity{...}; Good class cat {...}; class PERSON {...}; class seoul_city{...}; 멤버 변수의 이름은 뱀(Snake) 표기법을 사용해라 뱀(Snake) 표기법이란 "_"를 사용하는 것을 말합니다. 이 명명규칙은 지역 변수와 멤버변수를 구별하는데 사용합니다. Bad class Person{ int Age; std::string home_address; }; Good class Person{ int age_; std::string home_address_; };.. 2023. 10. 27.
728x90
반응형