c++ 클래스 생성자 에 관한 질문 입니다. 내용 간단합니다.
글쓴이: gyxor / 작성시간: 금, 2003/05/16 - 12:10오후
#include<iostream> using namespace std; class r { public : r() { cout << "111"; } r(int k) { cout << "rrr"; } }; int main() { r e; //(1) r e1(); //(2) return 0; }
(1)의 경우엔 r() 을 호출하게 됩니다.
(2)의 경우엔 r(int k)를 호출할 줄 알았는데요 디폴트를 호출하게 되는것
같기도 하구요 아무것도 호출되지 않는거으로 봐서는 잘 모르겠습니다.
비쥬얼 씨에도 해봤습니다.
(1)과 (2)의 차이점
설명부탁드립니다.
Forums:
Re: c++ 클래스 생성자 에 관한 질문 입니다. 내용 간단합니다.
(2)가 r e1(1);로 하려고 하시던게 아니었는지??
g++로는 잘되는데...
좀 우습겠지만...
첫번째 경우는 정상적으로 객체가 생성되고 당연히 디폴트 생성자가 호출됩니다.
하지만 두번째 경우는... ^^;
r el() ;
이거는 'r' 타입을 리턴하는 함수 el()의 선언이죠. 컴파일러는 함수 선언으로
생각하고 아무짓도 안하고 넘어갑니다. el 이라는 객체가 생성됐는지 확인하는
코드가 없어서 보이지 않았던거죠.
el.xxx() ;
하는 식으로 확인했으면 아마 컴파일 오류가 발생할 껍니다.
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
재미없는 일은 하지 않겠다는 인간 쓰레기. ㅡ,.ㅡ;;
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
댓글 달기