생성자와 "외모가있는"함수에 할당 할 수있는 이유는 무엇입니까?생성자에 지정 하시겠습니까? (튜플 티처럼)
예 :
struct Bar {
Bar() : b_(false) {}
Bar(bool b) : b_(b) {}
};
struct Foo {
Foo(Bar const & bar) : bar_(bar) {}
Foo operator=(Foo const & f) { return Foo(f.bar_); }
const Bar & bar_;
}
Foo bool_to_foo(bool b) { return Foo(Bar(b)); }
Foo MakeFoo(Bar const & bar) { return Foo(bar); }
왜이 작품은 않습니다
Bar bar;
MakeFoo(bar) = bool_to_foo(true);
이 작동하지 않는 이유는 무엇입니까?
Bar bar;
Foo(bar) = bool_to_foo(true); // Error: 'bar': redefinition; different basic types
MakeFoo (.)와 Foo (.)는 동일한 서명과 동일한 기능을 갖습니다.
생성자의 특별한 점은 무엇입니까?
"기능에 할당"할 수 없습니다. 그러나 함수 객체에 할당 할 수 있습니다! –
아, 그리고 코드의 표현식에서'Foo()'를 볼 때, 그것은 "생성자"가 아닙니다. _directly_ 호출하거나 생성자를 참조하는 것은 불가능합니다. –
코드에서 "함수에 할당"하지 않으면 함수의 반환 값에 할당하려고합니다. – PlasmaHH