2016-07-04 2 views
0

우리는

Class obj=""; 

객체를 초기화하는 데 ""사용할 수 뭔가를 할 수 있나요 따옴표로 개체를 초기화 할 수 있나요? 나는 인터뷰에서 이것을 보았고 면접관은 그것이 유효 함을 언급했다.

업데이트 : 답변 해 주셔서 감사합니다. 장래 독자의 이익을 위해, 나는 수색을했다, 이것은 복사 생성자라고 이름이 지어진다. copy constructor parameters 과 같은 링크가 유용 할 수 있습니다.

+1

"Class"가 일부 C++ 클래스 인 경우 C++는 유효한지 여부에 관계없이 클래스의 생성자에 따라 다릅니다. 그러나 이것은 확실히 C++ 일 수 있습니다. –

+0

@SamVarshavchik 어떤 생성자가 이것을 허용하는지 알 수 있습니까? – william007

+0

@ william007'Class'와 같이'const char *'를 인자로하는 생성자를 가지고 있습니다. – songyuanyao

답변

1

예, 실제로 유효합니다. 다음은 작동하는 예제 코드입니다.

#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; 
} 
+0

그런 경우에 우리는 왜 Class foo = new Class ("bar")를 사용 하는가? 컴파일 오류가있는 것 같습니까? – william007

+0

@ william007 "new Class (...)"가 포인터를 반환하기 때문에 Class * foo = new Class ("bar") 여야합니다. 또한 포인터를 원하지 않으면 Class foo = Class ("bar") 또는 Class foo ("bar") 또는 Class foo = "bar"여야합니다. 이 작품들 중 하나. –

+0

감사합니다 Andros, 형식'Class foo = "bar"'support> = 2 생성자 인수가 가능합니까? – william007