объект литья с пользовательским типом - PullRequest
3 голосов
/ 09 октября 2011

Можем ли мы привести объект с пользовательскими типами, как мы делаем для обычных типов данных?как, скажем, мы делаем приведение типа для типа int:

int variable_one = (int) имя_переменной;

, поэтому мы можем сделать следующее: (сложное) object_name;где complex - класс, который я написал для сложения комплексных чисел с использованием оператора + перегрузка.

Возможно ли это обычным способом?или нам нужно написать какую-то функцию перед вызовом этого положения?или вообще невозможно набирать текст таким образом?

Большое спасибо :) С уважением, Ашиш

Ответы [ 3 ]

8 голосов
/ 09 октября 2011

int variable_one=(int)variable_name; - это приведение в стиле C.

C ++ предлагает множество операторов приведения:

  • dynamic_cast <new_type> (expression)
  • reinterpret_cast <new_type> (expression)
  • static_cast <new_type> (expression)
  • const_cast <new_type> (expression)

Ознакомьтесь с статьей о приведении типов или обратитесь к любой вводной книге C ++.

3 голосов
/ 09 октября 2011

Определяемый пользователем тип приведенного определения приведен () для пользовательского типа.

ex.)

#include <iostream>
#include <cmath>

using namespace std;

struct Point {
    int x;
    int y;
    Point(int x, int y):x(x), y(y){}
    operator int(){
        return sqrt(x*x+y*y);
    }
};

int main() {
    Point point(10,10);
    int x = (int)point;
    cout << x ;
}
0 голосов
/ 09 октября 2011

Почему вы хотите это сделать?Я думаю, вы должны написать соответствующие конструкторы, если вы хотите создать объект вашего класса.Как известно, конструкторы могут быть перегружены.Поэтому не стесняйтесь писать более одного конструктора, если вам нужно, чтобы ваши объекты создавались по-разному.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...