溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C++中數據類型轉換詳解及其作用介紹

發布時間:2021-09-02 17:32:07 來源:億速云 閱讀:171 作者:chen 欄目:開發技術

本篇內容主要講解“C++中數據類型轉換詳解及其作用介紹”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“C++中數據類型轉換詳解及其作用介紹”吧!

目錄
  • 概述

  • 不同類型數據間的轉換

  • 隱式類型轉換

  • 強制類型轉換

  • 自己聲明的類型轉換

  • 轉換構造函數

  • 類型轉換函數

  • 案例

  • 應用

概述

在日常的開發中, 我們經常會用到數據類型轉換, 所以我們要對數據類型轉換有一定的了解.

不同類型數據間的轉換

在 C++ 中, 某些標準類型的數據之間可以自動轉換.

隱式類型轉換

隱式類型轉換: 由 C++ 編譯系統自動完成的, 我們無需干預. 例如:

int main() {
    int a = 6; 
    a  = a + 3.5; 
    cout << a << endl;

    return 0;
}

輸出結果:

9

強制類型轉換

強制類型轉換: 在程序中將一種類型數據明確轉換成另一指定的類型. 例如:

int main() {
    int a = int(2.3);
    double b = double(12);
    cout << a << endl;
    cout << b << endl;

    return 0;
}

輸出結果:

2
12

自己聲明的類型轉換

如果用我們自己聲明的類型進行數據轉換就會發生一個問題: 編譯系統并不知道如何轉換.

解決辦法:

  • 定義專門的函數來讓編譯系統知道怎樣進行轉換

  • 轉換構造函數和類型轉換函數

轉換構造函數

轉換構造函數 (conversion constructor function) 可以將一個其他類型的數據轉換成一個類的對象的構造函數.

例如:

#ifndef PROJECT8_COMPLEX_H
#define PROJECT8_COMPLEX_H

#include <iostream>
using namespace std;

class Complex {
private:
    double real;
    double imaginary;
public:
    Complex() {};  // 無參構造
    Complex(double r, double i) : real(r), imaginary(i) {};  // 有參構造
    Complex(Complex & c) {  // 復制構造函數
        cout << "copy constructor" << endl;
    };
    Complex(double r) : real(r) {};  // 轉換構造函數
    };
};

#endif //PROJECT8_COMPLEX_H

類型轉換函數

當我們使用轉換構造函數的時候我們可以將一個標準數據轉換為類的對象. 我們使用類型轉換函數 (type conversion function) 可以將一個類的對象反過來轉換成標準類型的數據.

案例

Complex 類:

#ifndef PROJECT8_COMPLEX_H
#define PROJECT8_COMPLEX_H

#include <iostream>
using namespace std;

class Complex {
public:
    double real;
    double imaginary;
public:
    Complex() {};  // 無參構造
    Complex(double r, double i) : real(r), imaginary(i) {};  // 有參構造
    Complex(double r) : real(r) {};  // 轉換構造函數
    operator double() {return real;};  // 類型轉換函數
    Complex operator+(Complex &c) {
        return Complex(real + c.real, imaginary + c.imaginary);
    };
};

#endif //PROJECT8_COMPLEX_H

main:

#include <iostream>
#include "Complex.h"
using namespace std;

int main() {
    Complex c1(3.1, 4), c2(5.2, -10);
    double d1, d2;
    d1 = c1 + 2;  // 3.1 + 2, 調用類型展緩函數
    cout << d1 << endl;
    d2 = c1 + c2;  // 3.1 + 5.2, 調用類型展緩函數
    cout << d2 << endl;

    return 0;
}

輸出結果:

5.1
8.3

編譯系統會根據表達式的上下文, 自動調用類型轉換函數, 將 Complex 類對象作為 double 類型數據使用.

應用

類型轉換函數也叫做: 類型轉換運算符函數, 類型轉換運算符重載函數, 強制類型轉換運算符重載函數.

不同類型進行各種混合運算的方案:

  • 轉換構造函數

  • 類型轉換函數

  • 運算符重載

進行各種運算時, 使用類型轉換函數, 而不是對多種運算符進行重載. 工作量較小, 程序精干, 防止出現二義性.

到此,相信大家對“C++中數據類型轉換詳解及其作用介紹”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

c++
AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女