본문 바로가기

Study/C++31

Class 멤버의 접근 제한자 클래스 멤버의 접근 제어에 대해 알아보자 우선 멤버의 내부 접근과 외부 접근의 의미를 간략한 코드를 통해 보자면 아래와 같다. class Test { public: //접근 제어 키워드 int a; void plus() { a++; // 클래스 내부에서 멤버 변수의 값에 접근 } }; int main(void) { Test h; h.a =10; //클래스 외부에서 클래스를 선언하여 a값을 변경, 즉 외부 접근 h.plus(); // 외부 접근 return 0; } 위에서 클래스 내에서 값을 증거시키는 부분을 내부 접근이라고 하고 그 이외에는 모부 외부 접근에 해당된다. 그럼 public, private, protected에 대해서 알아 보도록 하장... 접근을 제어하는 영역의 범위를 기주으로 위 세 접근.. 2011. 9. 28.
Call - by - Reference.... 자...이번에는 Call by Reference를 포인터가 아닌 &연산자를 이용해서 하는 방법을 보자구..저번에 알아본 &연산자에 대한것을 알고 있다고 가정하고.. c에서는 인자로 들어온 매개변수 값을 포인터로 넘겨서 직접 인자로 넣어준 메모리 접근하여 그 값을 변경했었는데 c++에서는 &연산자를 이용해서 좀 안전하게 인자로 들어온 값을 변경 할 수가있다. 예를 들어 c에서는 아래와 같이 포인터를 이용해 직접 메모리에 접근하여 그 값을 변경하였었다. void Test(int * a, int *b) { int t; t= *a; *a = *b; *b = t; } int main() { int aa=10, bb=20; Test(&aa, &bb); //인자로 들어간 aa와 bb값이 변경된다. } 하지만 c++에.. 2011. 9. 28.
namespace 에 대해... 함수이름이 같을 경우에 대한 문제 해결 방법이라고 볼수 있다.. 함수이름이 같더라도 다음과 같이 선언하여 쓰면 그러한 문제를 해결할수 있다. 이런한 문제는 여러명이 한 프로젝트를 수행시에 함수명이 겹처서 발생할 수 있는 문제를 예방 할수 있는거 같다... 우선 보자면 namespace T_1 { void TestFunction(void) { ..... } } namespace T_2 { void TestFunction(void) { ....... } } 같은 함수명이 사용되었지만.. 저런식으로 선언하고 쓴다면 문제 될거이 없다..다만 사용시에는 아래와 같이 어떤놈의 함수인지를 알려주고 사용하면 된다. int main(void) { T_1::TestFunction(); //요런식으로 (:: 요건 범위지정 .. 2011. 9. 28.
디폴트 매개변수와 함수 오버로딩시 주의점!! 디폴트 매개변수는 요런거지 int TestFunction(int a=2) { ....... int c; c = a; return c; } 저함수 호출시 TestFunction(); 요렇게 호출하면 리턴값이 2나오는거...다 아는 내용이구 근데 여기서 저 함수를 오버로딩 할때 아래와 같이 하면 문제가 된다는거지.. int TestFunction(void) { .................. return 0; } 이게 왜?? 저 함수를 저런식으로 오버로딩 해놓고 빌드시에는 에러가 나지 않는데 저렇게 해놓고 TestFunction(); 호출하면 에러가 발생하게 된다는거!! 요점을 주의 해야 한다.. 과묵하고... 겸손하고... 솔직하고... 성실하게... 2011. 9. 28.