본문 바로가기
Quality control (Univ. Study)/Data structure

자료구조론(3)

by 생각하는 이상훈 2022. 9. 26.
728x90

오버로딩

함수의 구별

-시그니쳐가 같은 함수는 하나만 정의 (동일한 클래스 내부)

-시그니쳐=> 함수이름, 형식 매개 변수의 수와 자료 유형

 

함수 오버로딩

-동일한 이름의 함수를 중복정의하는 것 => 이름만 같고 인자의 개수와 타입은 다른것)

-조건  => 매개 변수의 개수 혹은 타입이 일치하지 않아야함

          => 호출할 함수를 매개변수의 정보까지 참조해서 호출

-mangling: func(int) => func_int로 변환해서 참조

 

디폴트 매개 변수

-전달되지 않은 인자를 대신하기 위한 기본 값이 설정되어 있는 변수

 

int addInteger(int x, int y)
{
    return x + y;
}

double addDouble(double x, double y)
{
    return x + y;
}

오버라이딩

부모클래스와 자식클래스 사이에서 일어나는 재정의

#include <iostream>

using namespace std;

class A {
public:
	void over() { cout << "A 클래스의 over 함수 호출!" << endl; }
};

class B : public A {
public:
	void over() { cout << "B 클래스의 over 함수 호출!" << endl; }
};

int main()
{
	B b;
	b.over();
	return 0;
}

 


객체와 클래스

클래스란?

-클래스는 객체를 만들기 위한 모형 또는 틀

-객체를 만들려면 반드시 객체의 다양한 특성

 

객체란?

-클래스에서 하나의 구체적인 표현(instance)

-Instantiation

 


복사생성자

 

class sanghoon{
	int age;
    string name;
public:
	sanghoon();			//constructor
    sanghoon(int age, string name);
    ~sanghoon();			//destructor
    sanghoon(const sanghoon& obj);	//copy constructor
}

Static

여러 객체가 하나의 변수를 공유하고자 할 경우 static 변수를 이용해야하고 static 변수는 클래스 변수라고도 부른다.

compile타임에 주소/크기가 결정되어 main함수가 실행되기 전에 static area에 자리를 잡는다. 따라서 public 변수인 경우 객체 생성이전에도 접근이 가능하다. static 변수는 각각의 객체의 멤버로 존재하는 것이 아니고 접근할 수 있는 권한만 부여된 것이다.

위와 같이 stack에 존재하는 s1, s2, s3 지역변수들을 static area의 count static 변수가 참조할 권한이 존재한다.

run-time 과정에서 메모리에 할당되는 dynamic binding에서 이용해야하는 new를 static 객체들은 이용할 필요없이 s1.count를 부를 수 있다.


 

728x90

'Quality control (Univ. Study) > Data structure' 카테고리의 다른 글

ArrayStack(1)  (0) 2022.11.18
자료구조론(5)  (1) 2022.10.06
자료구조론(4)  (1) 2022.10.03
자료구조론(2)  (0) 2022.09.12
자료구조론 기초(1)  (0) 2022.09.04