이우리는
Class obj="";
객체를 초기화하는 데 ""사용할 수 뭔가를 할 수 있나요 따옴표로 개체를 초기화 할 수 있나요? 나는 인터뷰에서 이것을 보았고 면접관은 그것이 유효 함을 언급했다.
업데이트 : 답변 해 주셔서 감사합니다. 장래 독자의 이익을 위해, 나는 수색을했다, 이것은 복사 생성자라고 이름이 지어진다. copy constructor parameters 과 같은 링크가 유용 할 수 있습니다.
이우리는
Class obj="";
객체를 초기화하는 데 ""사용할 수 뭔가를 할 수 있나요 따옴표로 개체를 초기화 할 수 있나요? 나는 인터뷰에서 이것을 보았고 면접관은 그것이 유효 함을 언급했다.
업데이트 : 답변 해 주셔서 감사합니다. 장래 독자의 이익을 위해, 나는 수색을했다, 이것은 복사 생성자라고 이름이 지어진다. copy constructor parameters 과 같은 링크가 유용 할 수 있습니다.
예, 실제로 유효합니다. 다음은 작동하는 예제 코드입니다.
#include <iostream>
#include <string>
using namespace std;
class Class {
private:
string data;
public:
Class (const char* foo) {
data = foo;
}
};
int main()
{
Class foo="bar";
return 0;
}
그런 경우에 우리는 왜 Class foo = new Class ("bar")를 사용 하는가? 컴파일 오류가있는 것 같습니까? – william007
@ william007 "new Class (...)"가 포인터를 반환하기 때문에 Class * foo = new Class ("bar") 여야합니다. 또한 포인터를 원하지 않으면 Class foo = Class ("bar") 또는 Class foo ("bar") 또는 Class foo = "bar"여야합니다. 이 작품들 중 하나. –
감사합니다 Andros, 형식'Class foo = "bar"'support> = 2 생성자 인수가 가능합니까? – william007
"Class"가 일부 C++ 클래스 인 경우 C++는 유효한지 여부에 관계없이 클래스의 생성자에 따라 다릅니다. 그러나 이것은 확실히 C++ 일 수 있습니다. –
@SamVarshavchik 어떤 생성자가 이것을 허용하는지 알 수 있습니까? – william007
@ william007'Class'와 같이'const char *'를 인자로하는 생성자를 가지고 있습니다. – songyuanyao