본문 바로가기

Window Course

Error]Cannot access the Classview information file.... Cannot access the Classview information file. Class View information will not be availabe visual6.0 으로 dsw파일을 실행하면 위와같은에러가 나올때가 있다. 그럴경우에는 .NCB .CLW 파일을 지우고나서 다시 실행하면 된다. 그리고 위와 같은 에러가 일어나면 클래스목록이 모두다 사라진다. 또 가끔 클래스 목록중에 몇개가 빠질때가 있는데 이럴때는 .h .cpp 파일 안에 빈공간에 space bar 를 쳐준담에 다시 rebuild all 을 해주면 다시 나타나기도 한다. 안돼면 .NCB .CLW 파일을 지운후에 다시 실행~!^^ 더보기
객체지향 프로그래밍 1.Encapsulation public, protected, private 이 3가지로 접근제한자가 있는데 (C++) 이 점근 제한자로 정보은닉의 수준을 나누는 것이다. 상속시에 도 이 제한자를 사용하는데... 우리는 public만을 사용한다. 그 이유는 우리가 차후에 유지보수하기 좋기 때문이다. protected와 private으로 상속시 부모 클래스의 접근제한자를 바꿔서 상속 받기때문에 코드를 쉽게 읽지 못한다. 2.Abstraction Virtual Function를 만들게 되면 Virtual Function Table 이 생기고 Virtual Funcrion Table Pointer 는 그 함수의 스택 맨 첫번째에 생김. ㄱ.ABC(Abstract Based Class) virtual함수가 하나.. 더보기
Boilerplate Code?? Boilerplate is any text that is or can be reused in new contexts or applications without being changed much from the original. Many computer programmers often use the term boilerplate code. A legal boilerplate is a standard provision in a contract. The term can also be used to describe text that is unnecessary due to its repetitiveness. 더보기
UTC Time??? Coordinated Universal Time From Wikipedia, the free encyclopedia (Redirected from UTC time) Coordinated Universal Time (abbreviated UTC) is the time standard by which the world regulates clocks and time. Computer servers, online services and other entities that rely on having a universally accepted time - use "Coordinated Universal Time" for that purpose. Though there are scientific differences .. 더보기
템플릿 더보기
try/catch 더보기
Interface(인터페이스) 인터페이스는 순수 가상함수로만 이루어진 클래스를 일컫는다. ABC(Abstract Based Class)는 순수가상함수와 일반 함수를 둘다 포함하고 있는 녀석이다. C++에서는 ABC를 그냥 인터페이스로 보는 경향이 있다. 그러나 ABC와 인터페이스는 확연히 다르다! java나 C#에 가보면 ABC는 클래스로 본다. 인터페이스로 보지않는다. 그리고 C++에서 클래스의 다중 상속을 허락하지만 사용하지 다중상속을 사용하지는 않는다.. 그러나 이 인터페이스의 다중상속은 사용한다. 이것은 그대로 java에 나타난다 java는 클래스의 다중상속을 문법적으로 에러이다. 그러나 인터페이스의 다중상속을 허락한다. 더보기
상속/포함/딜리게이션 재사용의 방법에는 3가지가 있다. 1.상속 2.포함 3.딜리세이션 상속은 부모의 모든것을 다 받는다. 포함은 포함 하는 녀석의 것 중에서 원하는 것만을 받을 수 있다. 그런데 이 상속과 포함의 단점은 빼도 박도 못하는 단점이 있다. 한번 상속받거나 포함했으면 끝까지 상속/포함을 해야한다. 그리고 상태 변화도 불가능하다. 이것이 가능한것은 딜리게이션뿐~! 여러개의 행위가 클래스로 정의되고 그 녀석들은 하나의 같은 부모 클래스를 상속한다고 한다. 그리고 이 클래스들은 가상 복사 생성자를 가지고 있다. (가상복사 생성자 : 가지 자신을 복사해서 넘겨주는 것이다.(자신의 this포인터를 return)) 이제 이 행위들을 사용하는 클래스는 부모클래스로 이 녀석들을 받는것이다. 그러면 다른 행위로 바꾸고자 할때 부.. 더보기
Copy copy 에는 shallow copy(얕은복사)와 deep copy(깊은복사)가 있다. 1.shallow copy 얕은복사의 경우에는 스택의 같을 그대로 스택으로 복사하는 것이다. 2.deep copy 깊은 복사는 완벽하게 복사해내는 것이다. 포인터가 이 둘을 가르는데 아주 적절한 녀석이다. 포인터의 경우에 스택에는 힙영역의 주소가 들어있고 값은 힙에 들어 있다. 포인터를 copy할때 얕은복사로 스택의 값을 복사하게 된다면 하나의 힙 메모리 영역을 복사한것이다. 이러면 다른 두개의 포인터변수가 하나의 힙 영역을 가리키고 사용하는 것이다. 이런복사는 메모리 릭을 발생시킨다. 우리가 원한 포인터 copy는 새로운 힙영역에다가 같은 값을 주고 싶은 것이다. (때로는 이 얕은 복사를 사용하기도 하지만 지금 우리.. 더보기
reference(참조자) C에는 없고 C++에는 있는것이 바로 이 reference이다. 레퍼런스란 일종의 별명, 별칭 이다. 참조자를 만들기 위해서 & 를 사용한다. 참조자는 생성(선언)시에 초기화가 되야한다. 그리고 레퍼런스는 바꿀 수 없다. reference역시 당연히 상수성을 유지해야 한다! (비const 가 cosnt를 받을 수 없다.) 이 reference가 나옴으로써 우리가 많이 들어보던 call by reference가 가능해진것이다!! 이 얘기를 하기전에 우리는 포인터를 사용해서 call by address를 했었다. (이 녀석은 call by reference 를 흉내낸 것이다...) reference를 이용한 call by reference는 call by address보다 훨씬 사용하기 편리하다. 왜냐면 포.. 더보기
This 포인터 클래스 함수 안에는 this포인터가 숨겨져 있다. this 포인터는 자기 자신과 같게 사용된다. 자기 자신에 잇는 모든 멤버변수, 멤버함수에 접근할 수 있다. 그리고 우리는 함수를 쓰면서 상수성을 시키면서 안전성을 유지 시켜주고자 한다. const를 잘 쓰면 에러가 일어난 가능성도 줄어들 것이다. this포인터 역시 const를 할 수 있다. 대표적으로 보여줄 수 있는것이 get, set 멤버 함수이다. int GetAge() const {...} int SetAge(int iAge) {...} GetAge의 경우 this가 const된것이다. 정확히 쓰면 const 'class_name' * const this 가 된것이다. 그럼 SetAge의 경우는? 'class_name' * const this 인.. 더보기
생성자/소멸자(파괴자) 생성자와 소멸자(파괴자)는 클래스의 시작과 끝에 각각 실행된다. 생성자의 경우 주로 클래스를 쓰기 위해서 필요한 인자를 받기위해서 사용하고, 소멸자의 경우 주로 할당된 동적 메모리의 해제를 위해서 사용된다. 생성자/소멸자를 선언해주지않으면 자동으로 디폴트 생성자/소멸자가 생성된다. 생성자 중에서 독특한 녀석은 복사 생서자 이다. 복사 생성자란 자기 자신과 같은 꼴의 녀석을 자신의 생성 인수로 받아서 그 녀석과 같게 생성되는 것이다. class cat{}; cat a; cat b(a); // 이러면 cat a와 같은 녀석의 b가 만들어 지는것이다! 그런데 복사생성자는 기본적으로 shallow copy를 한다. 만약 cat 클래스 안에 포인터 변수가 있다면 shallow copy를 하게 되면 안될 것이다. .. 더보기
인라인함수 인라인 함수는 실행속도가 빠르다. 보통 함수의 실행은 1.인수의 값을 순서대로 스택에 밀어 넣는다. 2.함수가 복귀할 번지를 저장한다.(바로 다음 번지는 스택에 저장) 3.함수가 정의 되어 있는 번지로 점프해서 제어권은 함수가 갖는다. 4.함수는 스택에 자신의 지역변수를 위핸 공간을 만든다. 5.함수의 코드를 수행 6.리턴값을 넘긴다. 7.복귀 번지로 리턴 8.스택 정리 위와 같이 복잡한 단계를 거쳐야 함수 하나가 수행되는 것이다. 그러나 인라인함수는 이와 다르게 함수의 호출부에 함수의 실행 부분이 있는 것이다. 그러면 굳이 스택을 지정해주고 다음 실행될 번지를 지정하고 함수실행후 돌아오는 번거로운 작업 필요없이 함수의 호출시에 스 함수가 실해되게 하는 것이다. 그러나 이렇게 만들경우에 실행파일이 커지는.. 더보기