컴퓨터 수업/C++(39)
-
파일 입출력(fstream)
@라이브러리 #include @사용할 클래스 ifstream (in fstream) // data로부터 내 프로그램으로 in ofstream (out fstream) // 내 프로그램으로부터 data로 out @사용할 메소드 open // 파일을 연다. >> 입력
2020.09.14 -
const에 관한 얘기
@일반변수 1. 일반변수에 const를 지정해놓았다면 이니셜라이징이 필요하다 (초기화가 필요하다.) 2. rvalue로 선언되었기 때문에, 수정할 수 없다. 3. 일반변수의 경우엔 datatype 앞에 const가 오든, 뒤에 오든 차이가 없다. @포인터변수 1. const int 즉, constant한 int라고 생각하면 된다. 따라서 pointerVariable이 가르키는 방향 (담고있는 메모리 주소)는 바뀔 수 있으나, 그것이 가르키는 방향에 있는 "자료"는 int로 constant해야한다. 근데 사실 좀 어불성설이긴 해, 메모리 주소를 바꾸면 그 방향에 있던 값도 바뀔텐데 이게 뭐하는건가 싶기도 하고... 그저 포인터변수가 아닌 일반변수 세상에서 바꿀 수 없다고 이해를 해 두자 메모리주소는 바꿀 ..
2020.09.13 -
연산자 오버로드(operator overload)//ostream 나중에 채워넣기
@연산자 오버로드 클래스 변수(객체)를 이용하여 프로그램을 작성하다 보면 클래스 변수끼리 덧셈,뺄셈,곱셈 등의 연산이 수행되도록 해야 하는 경우가 발생한다. 그러나 일반 연산자를 사용하여 객체끼리 덧셈이나 뺄셈을 수행할수는 없다. C++에서는 기존의 연산자의 의미를 사용자가 임의로 변경하여 사용할 수 있도록 하는 연산자 오버로드(operator overload) 기능을 제공한다. 물론 +를 -로 기능하도록 바꾸고, *을 /로 바꾸는 그런 장난스러운 짓도 할 수 있겠지만, 본래 의미는 C++에서 기본적으로 제공하는 연산자의 기능을 특정 객체에 대해 동작하도록 사용자가 새로운 기능의 의미로 재정의 하는 것을 말한다. 따라서, 연산자를 오버로드해도 연산자가 가지고 있는 본래의 기능(의미)는 상실되지 않도록 해..
2020.09.10 -
friend 함수
@프렌드함수 프렌드(friend) 함수는 클래스의 멤버 함수가 아니면서 클래스의 전용(private) 데이터 멤버에 접근할 때 사용하는 함수이다. 이때, 클래스의 멤버 함수가 아니라면, 일반 함수 또는 다른 클래스의 멤버 함수가 될 수 있겠다. 일반 함수 또는 다른 클래의 멤버함수 (외부함수)가 특정 클래스의 전용 데이터 멤버를 참조해야 하는 경우가 생겼을때, 외부 함수를 특정 클래스의 프렌드 함수로 선언하면 해당 클래스의 전용 데이터 멤버들을 참조할 수 있다. 프렌드 함수를 사용하기 위해서는 클래스의 프렌드로 사용할 함수의 원형을 클래스 내부에 선언하고 그 앞에 예약어 friend를 붙인다. @드는 생각 private 데이터멤버에 접근할 수 있는자는 누가 있을까? 바로 멤버함수밖에 없다.따라서 해당 멤..
2020.09.10 -
오버로딩과 다형성 (오버로딩은 그냥 다른 datatype 지원 그 자체다.)
@오버로딩 overloading. 과다적재.라는 뜻이다. 하지만 C++ 에선 중복적재라고 이해해야 한다. 객체지향적 프로그래밍에서 중요한 게 뭐라고? 바로 다형성(polymorphism)이다. 다형성 : 프로그램 언어의 각 요소들이 다양한 자료형에 속하는 것이 허가되는 성질을 가리킨다. 중복적재가 무엇인지 알아보고 이것이 왜 다형성에 부합하는지 알아보자. @코드 void point(int x,int y) { cout
2020.09.10 -
this 포인터
@느낌 멤버함수 내부에만 작성하게 될것이다. no 프렌드함수 @this 포인터 멤버 함수 내에서 클래스의 데이터 멤버들을 참조하는 경우에 직접 참조가 가능하기 때문에 객체명을 지정하거나 도트 연산자를 사용할 필요가 없었다. 하지만 연산자 오버로딩에서 중요하니까 알아야한다. 다음 예시를 보자. class vector { private: int vector[2] public: int inner(vector b) { return vector[0]*b.vector[0] +vector[1]*b.vector[1]; } } int main() { vector a,b; cout 가 의미 있는것이 아니다.
2020.09.10