一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務(wù)器之家 - 編程語言 - C/C++ - C/C++中數(shù)據(jù)類型轉(zhuǎn)換詳解及其作用介紹

C/C++中數(shù)據(jù)類型轉(zhuǎn)換詳解及其作用介紹

2021-12-28 16:56我是小白呀 C/C++

這篇文章主要介紹了C/C++中數(shù)據(jù)類型轉(zhuǎn)換詳解及其作用,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下

概述

在日常的開發(fā)中, 我們經(jīng)常會用到數(shù)據(jù)類型轉(zhuǎn)換, 所以我們要對數(shù)據(jù)類型轉(zhuǎn)換有一定的了解.

C/C++中數(shù)據(jù)類型轉(zhuǎn)換詳解及其作用介紹

 

不同類型數(shù)據(jù)間的轉(zhuǎn)換

在 C++ 中, 某些標(biāo)準(zhǔn)類型的數(shù)據(jù)之間可以自動轉(zhuǎn)換.

 

隱式類型轉(zhuǎn)換

隱式類型轉(zhuǎn)換: 由 C++ 編譯系統(tǒng)自動完成的, 我們無需干預(yù). 例如:

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

  return 0;
}

輸出結(jié)果:

9

 

強(qiáng)制類型轉(zhuǎn)換

強(qiáng)制類型轉(zhuǎn)換: 在程序中將一種類型數(shù)據(jù)明確轉(zhuǎn)換成另一指定的類型. 例如:

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

  return 0;
}

輸出結(jié)果:

2
12

 

自己聲明的類型轉(zhuǎn)換

如果用我們自己聲明的類型進(jìn)行數(shù)據(jù)轉(zhuǎn)換就會發(fā)生一個問題: 編譯系統(tǒng)并不知道如何轉(zhuǎn)換.

解決辦法:

  • 定義專門的函數(shù)來讓編譯系統(tǒng)知道怎樣進(jìn)行轉(zhuǎn)換
  • 轉(zhuǎn)換構(gòu)造函數(shù)和類型轉(zhuǎn)換函數(shù)

C/C++中數(shù)據(jù)類型轉(zhuǎn)換詳解及其作用介紹

 

轉(zhuǎn)換構(gòu)造函數(shù)

轉(zhuǎn)換構(gòu)造函數(shù) (conversion constructor function) 可以將一個其他類型的數(shù)據(jù)轉(zhuǎn)換成一個類的對象的構(gòu)造函數(shù).

例如:

#ifndef PROJECT8_COMPLEX_H
#define PROJECT8_COMPLEX_H

#include <iostream>
using namespace std;

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

#endif //PROJECT8_COMPLEX_H

 

類型轉(zhuǎn)換函數(shù)

當(dāng)我們使用轉(zhuǎn)換構(gòu)造函數(shù)的時候我們可以將一個標(biāo)準(zhǔn)數(shù)據(jù)轉(zhuǎn)換為類的對象. 我們使用類型轉(zhuǎn)換函數(shù) (type conversion function) 可以將一個類的對象反過來轉(zhuǎn)換成標(biāo)準(zhǔn)類型的數(shù)據(jù).

C/C++中數(shù)據(jù)類型轉(zhuǎn)換詳解及其作用介紹

 

案例

Complex 類:

#ifndef PROJECT8_COMPLEX_H
#define PROJECT8_COMPLEX_H

#include <iostream>
using namespace std;

class Complex {
public:
  double real;
  double imaginary;
public:
  Complex() {};  // 無參構(gòu)造
  Complex(double r, double i) : real(r), imaginary(i) {};  // 有參構(gòu)造
  Complex(double r) : real(r) {};  // 轉(zhuǎn)換構(gòu)造函數(shù)
  operator double() {return real;};  // 類型轉(zhuǎn)換函數(shù)
  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, 調(diào)用類型展緩函數(shù)
  cout << d1 << endl;
  d2 = c1 + c2;  // 3.1 + 5.2, 調(diào)用類型展緩函數(shù)
  cout << d2 << endl;

  return 0;
}

輸出結(jié)果:

5.1
8.3

編譯系統(tǒng)會根據(jù)表達(dá)式的上下文, 自動調(diào)用類型轉(zhuǎn)換函數(shù), 將 Complex 類對象作為 double 類型數(shù)據(jù)使用.

 

應(yīng)用

類型轉(zhuǎn)換函數(shù)也叫做: 類型轉(zhuǎn)換運(yùn)算符函數(shù), 類型轉(zhuǎn)換運(yùn)算符重載函數(shù), 強(qiáng)制類型轉(zhuǎn)換運(yùn)算符重載函數(shù).

不同類型進(jìn)行各種混合運(yùn)算的方案:

  • 轉(zhuǎn)換構(gòu)造函數(shù)
  • 類型轉(zhuǎn)換函數(shù)
  • 運(yùn)算符重載

進(jìn)行各種運(yùn)算時, 使用類型轉(zhuǎn)換函數(shù), 而不是對多種運(yùn)算符進(jìn)行重載. 工作量較小, 程序精干, 防止出現(xiàn)二義性.

到此這篇關(guān)于C/C++中數(shù)據(jù)類型轉(zhuǎn)換詳解及其作用介紹的文章就介紹到這了,更多相關(guān)C++數(shù)據(jù)類型轉(zhuǎn)換內(nèi)容請搜索服務(wù)器之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持服務(wù)器之家!

原文鏈接:https://blog.csdn.net/weixin_46274168/article/details/117209139

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 香蕉久久夜色精品国产尤物 | 三级黄色片在线免费观看 | 美尻在线 | 校花被拖到野外伦小说 | 免费亚洲视频在线观看 | 日韩porn | 日本中文字幕高清 | 日本69av| spy2wc48美女撒尿| 精品久久久久久国产91 | 亚洲欧美日韩国产一区图片 | 国产午夜精品理论片 | 欧美亚洲国产精品久久第一页 | 亚洲国产精品久久网午夜小说 | 草莓香蕉绿巨人丝瓜榴莲污在线观看 | 国产福利资源网在线观看 | 欧亚专线欧洲m码可遇不可求 | 男人的j伸到女人的屁股眼 男人吃奶动态图 | 91精品啪在线观看国产91九色 | 日韩精品一区二区三区中文版 | 91色+91sesex| 欧美日韩中文字幕久久伊人 | 欧美亚洲国产另类在线观看 | 俄罗斯freeoo性另类 | 第一国内永久免费福利视频 | 毛片免费的 | 亚州在线| 国产精品每日在线观看男人的天堂 | 美女的让男人桶爽30分钟的 | 国产在线观看99 | aⅴ视频在线免播放观看 | 加勒比京东热 | 久久亚洲精品专区蓝色区 | 国产成人99久久亚洲综合精品 | 毛片资源站 | 四虎导航 | yellow高清视频日本动漫 | 欧美一级在线 | 亚洲精品一 | 特黄特黄一级片 | 人人爽人人射 |