2016-07-04 3 views
0

Можно ли сделать что-то вродеМожно ли инициализировать объект с двойной котировкой

Class obj=""; 

Можно использовать «» для инициализации объекта? Я видел это в интервью, и интервьюер отметил, что это действительно так.

Обновление: Спасибо за ответы здесь. В интересах будущих читателей я сделал несколько поисков, это называется копией конструктора. Некоторые ссылки, такие как copy constructor parameters могут быть полезны.

+1

Если «Класс» - это некоторый класс 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»). Кроме того, если вы не хотите указатель, это должен быть класс foo = класс («bar») или класс foo («bar») или класс foo = «bar». Либо одна из этих работ. –

+0

Спасибо Andros, может ли формат 'Class foo =" bar "' support> = 2 аргумента конструктора? – william007

Смежные вопросы