[C++ ERROR] LNK2001 error
·
Computer Science/기타 error
error LNK2001 : "~~" 외부기호를 확인할 수 없습니다. 에러 이유: 클래스 내부에 static 변수를 선언 -> 해당 static 변수를 찾을 수 없을 때 발생 즉, static 변수를 클래스 내부에 선언하고 생성자 내에서 초기화 해 줄 때 객체가 생성될 때마다 리셋기 때문에 에러가 발생함 // A.h class A{ private: static int a; public: A(); } //A.cpp A::A(){ a=10; } int A::a=10;을 해주어야한다. // A.h class A{ private: static int a; public: A(); } //A.cpp int A::a=10;//수정부분 A::A(){ a=10; } static 변수는 전역변수의 성질도 갖고있기 때문에 ..
[C++] 접근자와 설정자
·
Computer Science/Programming Language
접근자 (accessor) : 멤버 변수 값을 반환하는 멤버 함수 설정자 (mutator) : 멤버 변수 값을 변경하는 멤버 함수 접근자와 설정자 - 일반적으로 get이나 set이 멤버함수의 이름 앞에 붙여짐 ex. getSpeed(), setSpeed() - 사용 이유 (1) 정보 은닉 클래스의 인터페이스와 구현을 분리하는 것이 좋은데, 이 이유는 구현을 변경하기 쉬워지기 때문 ex) gear 변수를 advanced_gear 변수로 변경한다고 가정 만약 외부에서 gear멤버 변수를 직접 사용했다면 gear멤버 변수의 이름 마음대로 변경 불가능 하지만, 접근자와 설정자 사용시 변경 편리 //변경 전 int getGear(){ return gear; } void setGear(ing g){ gear=g; ..
[C++] 객체의 동적 생성
·
Computer Science/Programming Language
동적으로 객체 생성 - new 사용 객체에 대한 포인터 사용하여 객체 사용 명시적으로 객체 삭제 - delete 사용 Car *dynCar = new Car;//동적 객체 생성 dynCar -> speed = 100;//동적 객체 사용 delete dynCar;//동적 객체 삭제 #include #include using namespace std; class Car { public: //멤버 변수 선언 int speed; //속도 int gear;//기어 string color;//색상 //멤버 함수 선언 void speedUp() {//속도 증가 멤버 함수 speed += 10; } void speedDown() {//속도 감소 멤버 함수 speed -= 10; } void show() {//상태 출력..
[C++] 함수 호출 시 인수 전달 방식
·
Computer Science/Programming Language
함수가 외부로부터 매개 변수를 통하여 데이터를 받는 방법(함수 호출 시 인수 전달 방식) (1) 값에 의한 호출(call by value) (2) 참조에 의한 호출(call by reference) 값에 의한 호출 (= 복사본 전달) "복사본 전달"인 이유: 복사본을 아무리 바꿔도 원본이 바뀌지 않음 #include using namespace std; void swap(int x, int y); int main() { int a = 100, b = 200; cout
[C++] 참조자(reference)
·
Computer Science/Programming Language
참조자(reference) : 변수에 별명을 붙여 접근 - 변수 var 선언 후 ref라고 하는 별명 붙이기 (& 사용) int var = 10; int &ref = var; // 참조자에 값을 대입하면 참조자가 참조하는 변수의 값이 변경됨 ref = 20; // var의 값이 20으로 변경됨 참조자 (reference) vs 포인터 (pointer) 1. 참조자는 선언과 동시에 초기화 되어야 함 int &ref;// 컴파일 에러 2. 포인터는 변수이기 때문에 포인터가 가리키는 대상은 변경될 수 있음 참조자는 자신만의 메모리 공간이 할당되지 않기 때문에 참조자가 가리키는 대상은 변경될 수 없음 int &ref = var1; ref = var2;//컴파일 에러 : 참조하는 대상을 변경할 수 없음 3. 참조..