'Signature'에 해당되는 글 1건

  1. 2011.05.31 시그너처
2011.05.31 10:31

시그너처(signature) - 함수의 선언문에 나와있는 함수의 타입. 즉, 그 함수의 매개변수 리스트와 반환타입.

 ex) std::size_t numDigits( int number )의경우 시그너처는 std::size_t( int )이다.
 단, '시그너처'에 대한 공식적인 C++ 정의에서는 반환 타입을 제외 함.

기본 생성자(default constructor) - 매개변수가 없거나 모든 매개변수가 기본 값을 갖고 있으면 기본 생성자가 될 수 있다.


explicit - 생성자의 암시적인 타입 변환을 막는다.
 

#include <iostream>

class Test_first
{
public:
 Test_first()
 {
  std::cout<< " Test_first 생성자 호출." << std::endl;
 }
 ~Test_first() {}
};

class Test_second
{
public:
 explicit Test_second( int a = 0 )
 {// 기본 생성자
  std::cout<< " 기본 Test_second 생성자 호출." << std::endl;
 }
 Test_second( int a = 0, int b = 1, int c = 2 )
 {// 기본 생성자
  std::cout<< " 기본 매개변수 갖은 기본 Test_second 생성자 호출." << std::endl;
 }
 ~Test_second() {}
};

void doSomething( const Test_second& test )
{
 std::cout<< "doSomething 호출."<< std::endl;
}

void main()
{
 Test_second test2( 100 );
 doSomething( test2 );

 doSomething( Test_second(200) );
 
}


복사생성자(copy constructor)  - 값에 의한 객체 전달을 정의해주는 함수
복사 대입 연산자(copy assignment operator) 
 - 객체가 새로 정의 될때는 생성자가 불린다. 새로운 객체가 정의되지 않는 상황에서는 대입연산자가 호출된다.
 두가지 경우로 호출되는 복사생성자, 복사 대입 연산자를 구분 할 수 있다.
 

#include <iostream>

class CopyTest
{
public:
 CopyTest()
 {
  std::cout<< "기본 생성자 호출."<< std::endl;
 }
 CopyTest( const CopyTest& rhs )
 {
  std::cout<< "복사 생성자 호출."<< std::endl;
 }
 CopyTest& operator= ( const CopyTest& rhs )
 {
  std::cout<< "복사 대입 연산자 호출."<< std::endl;
  return CopyTest();
 }
 ~CopyTest(){}
};

void main()
{
 CopyTest test; // 기본 생성자 호출
 CopyTest test2( test ); // 복사 생성자 호출
 test = test2; // 복사 대입 연산자 호출
 
 CopyTest test3 = test2; // 복사 생성자 호출
}

신고
Posted by 우엉 여왕님!! ghostkyow

티스토리 툴바