Automotive Software

멤버함수 기본값 vs 멤버함수 중첩 본문

프로그래밍 (Programming)/C++ (C Plus Plus) 기초

멤버함수 기본값 vs 멤버함수 중첩

AutoSW 2020. 12. 28. 23:15
  • 멤버함수 기본값 선언
    • 비클래스 함수의 기본값 선언 방식과 같은 법칙 적용
    • 아래와 같이 함수 선언 시 기본값 선언, 예, bool takeInitVal = false;
      • 선언된 또는 전달된 기본값을 토대로 전달받은 값을 사용할지 생성자에 의해 할당된 초기값을 사용할지 결정하도록 구현할 수 있음
class cMyClass
{
public:
	cMyClass(int initMemVar1, int initMemVar2);
	~cMyClass(){}
	void memFunc(int inVal1, int inVal2, bool takeInitVal = false);
    
private:
	int memVar1;
	int memVar2;
};

cMyClass::cMyClass(int initMemVar1, int initMemVar2)
{
	memVar1 = initMemVar1;
 	memVar2 = initMemvar2;
}
  • 중첩 멤버함수
    • 중첩 함수 1 : 생성자에서 전달된 기본값을 멤버변수 값으로 사용
    • 중첩 함수 2 : 입력값을 가지는 중첩된 멤버함수를 구현하여 전달된 입력값을 기본값으로 사용
class cMyClass
{
public:
	cMyClass(int initMemVar1, int initMemVar2);
	~cMyClass(){}
	void memFunc() const;
	void memFunc(int inVal1, int inVal2) const;
    
private:
	int memVar1;
	int memVar2;
};

cMyClass::cMyClass(int initMemVar1, int initMemVar2)
{
	memVar1 = initMemVar1;
 	memVar2 = initMemvar2;
}

// 중첩함수 1
cMyClass::memFunc() const
{
	memFunct(memVar1, memVar2);
}

// 중첩함수 2
cMyClass::memFunc(int inVal1, int inVal2) const
{
	// instead of member variables, input values are used
	cout << inVal1+inVal2 << endl;
}
  • 중첩 멤버함수는 언제 사용되는가?
    • 초기에 적절할 기본값을 선언할 수 없을 때
    • 매개변수 목록에 다른 형을 사용하고자 할 때
    • 함수 내부의 구현 기능이 상이할 때

'프로그래밍 (Programming) > C++ (C Plus Plus) 기초' 카테고리의 다른 글

다형성 (Polymorphism)  (0) 2021.01.07
상속 (Inheritance)  (0) 2021.01.02
연산자 중첩  (0) 2020.12.29
객체 초기화  (0) 2020.12.29
참조자  (0) 2020.12.28