2010-05-30 7 views
0

C++에서 클래스의 객체가 매개 변수로 함수로 전달되면 클래스의 복사 생성자가 호출됩니다.값을 함수에 전달할 때 호출 할 함수

개체가 nonclass 형식인지 궁금 해서요, 어떤 함수가 호출됩니까?

마찬가지로 C에서 변수의 값이나 주소를 함수로 전달할 때 어떤 함수가 호출됩니까?

감사합니다.

+0

Eh? nonclass 유형이란 무엇을 의미합니까? 기본 유형이 스택에 그냥 푸시됩니다. 어떤 함수를 호출 할 필요가 없습니다. – nothrow

답변

6

함수가 호출되지 않습니다. 객체를 구성하는 바이트가 호출 수신자의 올바른 위치 (메모리 또는 레지스터의 위치)로 간단히 복사됩니다.

2

함수가 호출되지 않습니다.

비 객체 유형에는 메소드가 없으므로 함수에 의해 그대로 사용되도록 스택에 복사됩니다.

3

복사 생성자는 객체가 값에 의해 전달되고 비 POD 유형 인 경우에만 호출됩니다. 이것은 함수에 의해 객체가 변경되기를 원하지 않는다면 객체를 참조로 전달하고 참조를 const 참조로 전달하는 일반적인 관행 중 하나입니다.

1

구현에 따라 다르지만 일부 경우 정수 유형 값이 필요한 함수에 부동 소수점 값을 전달하는 경우 함수 호출이 발생할 수 있습니다. (이것은 언어의 일부가 아닌 구현 세부 사항이지만 사실 때문에 그렇습니다. 그렇기 때문에 그러한 변환은 종종 느려지므로 함수 호출이 필요하거나 필요하지 않습니다.)

관련 문제