C++ 12일차
·
C++
C++는 예외를 우선적으로 생각하는 언어가 아니다(JAVA는 예외 위주의 프로그램 언어) 예외 발생 1 - 범위 이탈 INDEX값 보다 size가 커서 발생되는 오류에 대해서는 프로그래머가 해결할 수 있는 문제며, 이 문제에 대해서 해결을 위해 예외처리를 하는 것은 예외처리를 남용하는 것!(예측가능 시는 if로 해결) ->예외처리란 어쩔 수 없는 문제에 대해 처리를 하기 위해 사용하는 키워드 예외 발생 2 - 0으로 나누기 C++에서는 예외가 아니다(단지, 정의되지 않은 값이라고 나옴) if로 해결하는게 옳다 예외 발생 3 - NULL 개체 C++에서는 이것도 예외는 아니다! if로 해결하는게 옳다 그럼 예외처리는 어디서 해야 옳은가??? 예외 발생 4 - 생성자 생성자에서 변수에 new할당을 할 경우 ..
C++ 11일차
·
C++
static은 범위의 제한을 받는 전역 변수다 범위??? 1. 파일 속 2. 네임스페이스 속 3. 클래스 속 4. 함수 속 extern키워드 다른 파일의 전역변수에 접근을 가능하게 해줌 하지만 static을 사용하면 extern으로 접근이 불가능 static을 이용한 정적 멤버 변수는 클래스당 하나의 copy만 존재(똑같은 클래스를 여러개로 생성해도 같은걸 공유) 개체 메모리 레이아웃의 일부X 클래스 메모리 레이아웃에 포함 exe파일 안에 필요한 메모리 잡혀있음(미리 만들어둠)->전역변수처럼 함수안에 정적변수넣기X->클래스안에 넣기 전역변수 대신 정적 멤버변수 사용->범위제한이 필요 C스타일의 정적 변수는 사용할 이유가 없다 (가끔 사용하는 사람이 있다) 정적 멤버 함수는 논리적 범위에 제한 된 전역 함..
C++ 10일차
·
C++
암시적(implicit) 캐스팅 형 변환이 허용되지만 프로그래머가 명시적 형 변환 안 할 경우 ex) int number1 = 3; long number2 = number1; // 암시적 캐스팅 명시적(explicit) 캐스팅 프로그래머가 형 변환을 위해 코드를 작성 C++캐스팅 1.static_cast 2.const_cast 3.dynamic_cast (C++98, 모던C++에서 도입) 4.reinterpret_cast C스타일 캐스팅과 C++스타일의 차이 C스타일은 C++ 스타일 4개 중 하나를 한다 = 명확하게 구분X ->명백한 실수를 컴파일러가 캐치 불가능 =C++캐스팅이 해결 C스타일은?? int number2 = (int)number1; static_cast (값) 값을 유지하려고한다. 3.x..
C++ 9일차
·
C++
다중 상속에서 상속(앞에있는것)순으로 생성자 호출 C++에서는 super 사용이 불가능 ->다중 상속이 가능하기 때문에 다중 상속한 경우 super가 가리키는 대상을 모른다 ->부모의 이름으로 작성해야한다. 상속한 두 클래스에 같은 이름의 함수가 있을 시, 사용하려는 함수를 가진 부모 클래스를 특정해야함 myTa->Student::Display(); 가상 베이스 클래스 b가 a를 상속하고 c가 a를 상속했는데 d가 b와 c를 상속한경우??? a는 2개가 존재->virtual키워드를 이용하여 해결... (이렇게 해야할까?? ㄴㄴ) 다중상속은 최대한 사용하지말고 인터페이스를 사용하자 순수(pure) 가상함수 virtual void Speak() = 0; 처럼 구현이 안되어있는 멤버 함수(구현체가 없는 멤버 ..
C++ 8일차
·
C++
생성자 => 부모생성자 호출->자식생성자 호출 소멸자 => 자식소멸자 호출->부모소멸자 호출 부모생성자 호출을 따로 안하면 1.부모 생성자에 매개변수가 필요없는경우 - 암시적 호출로 사용 2.부모 생성자에 매개변수가 들어가야하는경우 - 컴파일 에러 다형성(Polymorphism) - 여러 모습으로 변한다 정적 바인딩 - 무늬따라 가는것 (C++) Cat* yourCat = new Cat(5,"Mocha"); - Cat의 멤버함수 따라감 Animal* yourCat = new Cat(5,"Mocha"); - Animal의 멤버함수 따라감 위의 방법이 아닌 JAVA형식으로 하고싶다면?? 다형성의 핵심 - 가상(virtual) 함수 속도 정적(비 가상함수)>동적(가상함수) (실행중 어떤 함수 호출할지 정하기떄..
C++ 7일차
·
C++
const를 쓰는 이유?? 멤버 변수 값의 변경을 방지 최대한 많은 곳에 const를 쓰면 안정성이 늘어남 const &를 사용하는 이유?? 불필요한 개체의 사본이 생기는 것을 방지 멤버 변수가 바뀌는 것 방지 const는 잘못 사용하면 에러가 나기 쉽다. 하지만 안정성을 위해 최대한 사용할 수 있게 숙달하는 것이 중요하다 연산자 오버로딩에는 const를 사용하지 않는다. 매개변수에 &(참조자)를 사용하면 무슨 차이가 벌어지는가?? Vector Vector::operator+(Vector rhs) Vector Vector::operator+(Vector& rhs) 위의 경우에는 operator+()영역에 Vector rhs가 생기고 값을 복사해서 영역을 잡은 후 연산한다. 아래의 경우는 operator+..