B는 int 매개 변수를 취하는 유효한 생성자가있는 클래스입니다. 즉, B가 int를 전달할 때 자체를 구성하는 방법을 알고 있다고합니다.
28은 int의 유효한 표현입니다.
B (28) int를 취하는 생성자를 사용하여 'B'클래스를 인스턴스화하는 방법입니다.
'B'의 생성자는 int와 bool을 취하지 만 두 매개 변수는 모두 "선택 사항"이며 int 매개 변수에 대해 "= 0"으로 표시되고 "=" true "를 반환합니다.
매개 변수가 선택적이므로 B는 매개 변수를 지정하지 않고 구성 할 수 있습니다.이 경우 매개 변수는 x = 0 및 b = true로 구성됩니다. 또한 예제에서와 같이 지정된 int 매개 변수를 사용하여 구성 할 수도 있습니다. 예제의 경우 x = 28이고 b = true입니다. 또한 두 매개 변수를 모두 지정하여 구성 할 수도 있습니다. 예 : B (8, 거짓). 그러나 bool 매개 변수 만 지정할 수는 없습니다. 예를 들어 B (false)는 작동하지 않습니다. 선택적 매개 변수를 채울 때 매개 변수를 건너 뛰는 방법은 없습니다. B (, false)가 유효하지 않습니다 ...
그래서 B (28)는 x = 28 인 B 객체를 만듭니다.
이제 DoSomething 함수는 'B'객체를 전달해야합니다. B (28)는 'B'객체의 유효한 구성이기 때문에 DoSomething의 매개 변수 목록을 충족시킵니다.
당신이 호출 할 때 :
DoSomething(B(28));
A 'B'개체를 구성하고 인수로 해봐요 전달됩니다. 함수 내부
는, B는 'bObject'라고 함수 서명 이유는
DoSomething(B bObject)...
이 기능 서명이 전달 될 타입 'B'의 무언가를 원하고,이 같은 언급 될 것이다 함수 안에있는 bObject.따라서
,
bObject.b = 1;
구성되고이 함수에 전달 된 B 클래스의 'B'부재에 1의 값을 할당한다.
아마도 다소 혼란스러운 이유는 DoSomething이 B 클래스의 b 멤버 설정을 완료하고 함수가 종료되면 B 클래스는 더 이상 존재하지 않으므로 DoSomething 함수를 종료 한 후에는 증명할 수있는 방법이 없다는 것입니다. b 멤버가 수정 된 것입니다.
임시 객체를 함수에 전달하고 수정 한 다음 존재하지 않게하는 것은 다소 쓸모없는 일입니다. 내가 알 수있는 한.
실제로 작성자가 설명하려고하는 것은 생성자에서 '명시 적'의 중요성입니다. 이 예제는 인수에 대한 암시 적 변환을 제외하고 명시 적 생성자에 대한 자신의 지적을 돕습니다.
'class_name (parameters)'는 지정된'parameters'를 사용하여'class_name'의 임시 객체를 생성합니까? – NathanOliver
임시 ('B (28)')는'doSomething' 범위의 기간 동안 객체를 생성하고 그것을 bObject에 할당합니다. 그 후, 대상은 파괴된다. – Amadeus