2010-06-14 2 views
1

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

MyClass obj1 = 100;//Not valid 

Предположим, у меня есть параметризованный конструктор, который принимает целое число.

MyClass(int Num) 
{ 
    // .. do whatever.. 
} 

MyClass obj1 = 100;//Now, its valid 

Как и при любых обстоятельствах, действует ли наоборот?!.

eg) int Number = obj1;//Is it VALID or can be made valid by some tweeks 

EDIT:

Я нашел, что это возможно с помощью функций преобразования. Функции преобразования часто называются «операторы литья», потому что они (вместе с конструкторами) являются функциями, называемыми при использовании cast.

функции преобразования используется следующий синтаксис:

-имя-преобразования типа оператора()

например) Многие объясняли это аккуратно ниже

ответ

6

Да, при условии, что объект неявно конвертируется в int либо напрямую, либо через промежуточный объект.

E.g. Если класс есть преобразование operator int это будет работать:

MyClass 
{ 
public: 
    operator int() const { return 200; } 
}; 
0

Да, вам нужно добавить оператора преобразования в MyClass

оператор int();

2

конструкторы C++, которые имеют только один параметр автоматически выполняет неявное преобразование типов. Вот почему работает преобразование из int в MyClass. Чтобы создать преобразование из MyClass в int, вы должны определить operator int() внутри MyClass.

0

MyClass не является целым числом, следовательно, вы не можете сделать int Number = obj1; Вы должны иметь метод или оператор (заявлено другими) в MyClass, который возвращает int. (int number = obj1.GetNum();)

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