* 함수 중복- 동일한 이름의 함수가 공존 * 다형성 * C 언어에서는 불가능 - function overloading- 함수 중복이 가능한 범위 * 보통 함수들 사이 * 클래스의 멤버 함수들 사이 * 상속 관계에 있는 기본 클래스와 파생 클래스의 멤버 함수들 사이 * 함수 중복 조건- 중복된 함수들의 이름 동일- 중복된 함수들의 매개 변수 타입이 다르거나 개수가 달라야 함- 리턴 타입은 함수 중복과 무관 생성자함수도 동일하게 중복이 가능하다하지만 소멸자는 중복이 불가능하다 디폴트 매개변수 - 매개변수에 값이 넘어오지 않는 경우, 디폴트 값을 받도록 선언된 매개변수매개 변수 = 디폴트값 평태로 선언 예시void star(int a = 5); // a의 디폴트 값은 5 디폴트 매개 변수를 가진 함수 호출s..
인자 전달 방식1. 값에 의한 호출, call by value* 함수가 호출되면 매개 변수가 스택에 생성됨* 호출하는 코드에서 값을 넘겨줌* 호출하는 코드에서 넘어온 값이 매개 변수에 복사됨 2. 주소에 의한 호출, call by address* 함수의 매개 변수는 포인터 타입* 호출하는 코드에서는 명시적으로 주소를 넘겨 받음* 호출하는 코드에서 넘어온 주소값이 매개 변수에 저장 참조보녓 사용법과 선언시 주의사항 refn = 3;n = 5;refn++; 초기화가 없으면 컴파일 오류int n = 2;int &refn; 참조변수는 배열을 만들 수 없다. void square(int n) { n = n + n;}int main() { int m=2; square(&m); cout j = j;이런식으로 a클래스..
1. 정적할당과 동적할당 정적할당이란 ?C++에서 변수를 잡듯이 객체도 선언을 통해 이루어 진다. C에서 전역변수와 지역변수로 나누어는 것과 같이, 객체 역시 같은 방식으로 전역 또는 지역 객체로 선언할 수 있다.전역 정적 객체는 main() 함수가 실행 되기 전 저장공간이 생성되고, 생성자가 호출된다. 객체가 생성되면 메모리에 데이터 저장공간이 생기고 바로 생성자가 호출된다. 따라서 전역 정적 객체 생성자의 호출은 main함수보다 먼저 이루어진다.동적할당이란 ?new에 의해 생성 되고, delete에 의해 삭제 된다. new로 생성 되면, new 실행 시점에서 객체의 저장공간인 메모리를 확보하고 생성자가 자동실행 된다. 동적객체는 힙영역에 존재하고 포인터를 넘겨 받아서 객체 포인터 변수에 주소값을 저장..
이전 예제에서는 메인함수안에서 모든 함수를 사용하여 만든 기본적인 계산예제 입니다.이번예제에서는 객체지향적 개념을 추가하여 메인함수와 각각 계산을 담당하는 클래스의 함수와헤더파일로 구분하여 실행해 보겠습니다. 메인소스 입니다. #include #include #include "Add.h" // 각각 계산을 담당하는 헤더파일을 선언합니다.#include "Sub.h"#include "Mul.h"#include "Div.h" using namespace std; char selectMenu(); int main(int argc, char *argv[]){ int x,y; Add a; Sub s; Mul m; Div d; while(1){ cout
1. 생성자의 개념. (멤버함수와의 차이점도 설명되어야 함) 생성자랑 클래스를 만들때 실행되는 것이며 클래스 내부에서 선언하여 사용한다만약 생성자를 만들지 않아도 기본적으로 기본 생성자가 실행되는데 이 기본 생정자는 매개변수와 함수를 가지지 않는 빈 생성자이다.생성자를 만들어 쓸경우가 있는데 이때는 새롭게 생성자를 정의 하여도 기본 생성자를 표시 해주어야 컴파일 에러가 나지 않는다. 멤버함수와의 차이점은 생성자는 클래스가 생성될때 한번 실행되는것이고 멤버 함수는 생성된 클래스에서 필요할때마다 호출하여 사용할수 있다는 점이 차이점이다. 생성자의 예시이다.class Rectangle{ public: int height; int width; Rectangle();}; 생성자는 항상 public 으로 정의하여야..
header file #include #include using namespace std; //클래스 선언 변수와 함수를 선언한다.class BankAccount{ private: int balance; string owner; int accountNumber; public: int getaccountNumber(); int getBalance(); string getOwner(); void setaccountNumber(int maccountNumber); void setOwner(string mowner); void setBalance(int maount); void deposit(int n); void withdraw(int n); void print();}; 함수구현 cpp파일 #include #..
#include #include using namespace std; class BankAccount { public: int getaccountNumber(); void setaccountNumber(int num); string getName(); void setName(string name1); int getBalance(); void setBalance(int bal); void deposit(int amount); void withdraw(int amount); private: int banknum; string name; int balance;}; int BankAccount:: getaccountNumber(){ return balance;} void BankAccount:: setaccou..
C++ 클래스 클래스(class)C++ 에서 클래스란 구조체가 확장 된 것 이라고 생각하면된다자바랑 비슷한점도 있지만 C++만의 문법이 따로있다. class Car { public: int gear; string color; int speeddown(); int speedup(); int getspeed(); void setspeed(int i); private: int speed;}; 위의 예제를 보면 public으로 정의된변수와 함수를 저런 식으로 한번에 정의할 수가 있으며 자바와는달리 default 로 정희하면 private으로 정의된다.위와같이 void setspeed();라는 함수의 원형을 선언해두면클래스 선언 밑에 함수를 정의해야한다int Car :: getspeed(){ return spee..