隱式的類類型轉換

如果構造函數只接受一個實參,則它實際上定義了轉換為此類類型的隱式轉換機制。將這種構造函數稱為轉換構造函數。

  1. #ifndef MAIN_H_INCLUDED
  2. #define MAIN_H_INCLUDED
  3. #include<iostream>
  4. usingnamespace std;
  5. classClassTest
  6. {
  7. public:
  8. ClassTest()
  9. {
  10. cout <<"ClassTest()"<<endl;
  11. }
  12. ClassTest(int i)
  13. {
  14. cout <<"ClassTest(int)"<<endl;
  15. value = i;
  16. value2 =2;
  17. }
  18. ClassTest(int i,int j): value(i), value2(j)
  19. {
  20. cout <<"ClassTest(int, int)"<<endl;
  21. }
  22. ClassTest(constClassTest& test)
  23. {
  24. cout <<"ClassTest(const ClassTest&)"<< endl;
  25. value = test.value;
  26. value2 = test.value2;
  27. }
  28. void getValue(int&,int&);
  29. private:
  30. int value =0;
  31. int value2 =0;
  32. };
  33. #endif// MAIN_H_INCLUDED
  1. #include"main.h"
  2. voidClassTest::getValue(int&iValue,int&iValue2)
  3. {
  4. iValue = value;
  5. iValue2 = value2;
  6. }
  7. int main()
  8. {
  9. ClassTest classTest =2;
  10. /**
  11. * 還可以使用以下幾種實現方法
  12. * ClassTest classTest(2);
  13. * ClassTest classTest = ClassTest(2);
  14. * ClassTest classTest = (ClassTest)2;
  15. */
  16. int value =0;
  17. int value2 =0;
  18. classTest.getValue(value, value2);
  19. cout <<"value = "<< value <<"\nvalue2 = "<< value2 << endl;
  20. return0;
  21. }
  • 只允許一步類類型轉換
  1. #ifndef MAIN_H_INCLUDED
  2. #define MAIN_H_INCLUDED
  3. #include<iostream>
  4. usingnamespace std;
  5. classClassTest
  6. {
  7. public:
  8. ClassTest()
  9. {
  10. cout <<"ClassTest()"<<endl;
  11. }
  12. ClassTest(string str)
  13. {
  14. strValue = str;
  15. }
  16. string getValue()
  17. {
  18. return strValue;
  19. }
  20. private:
  21. string strValue;
  22. };
  23. #endif// MAIN_H_INCLUDED
  1. #include"main.h"
  2. int main()
  3. {
  4. ClassTest classTest = string("Hello world!");
  5. //ClassTest classTest = "Hello world!";/*無法實現從char[]先轉化為string,在由string轉換為類類型*/
  6. cout << classTest.getValue()<< endl;
  7. return0;
  8. }
  • 抑制構造函數定義的隱式轉換
  1. #ifndef MAIN_H_INCLUDED
  2. #define MAIN_H_INCLUDED
  3. #include<iostream>
  4. usingnamespace std;
  5. classClassTest
  6. {
  7. public:
  8. ClassTest()
  9. {
  10. cout <<"ClassTest()"<< endl;
  11. }
  12. /**
  13. * 如果是在類聲明之外進行類成員函數的實現,explicit只加在聲明的位置
  14. */
  15. ClassTest(string str)
  16. {
  17. strValue = str;
  18. }
  19. string getValue()
  20. {
  21. return strValue;
  22. }
  23. private:
  24. string strValue;
  25. };
  26. #endif// MAIN_H_INCLUDED
  1. #include"main.h"
  2. int main()
  3. {
  4. //ClassTest classTest = string("Hello world!");/**< 錯誤 */
  5. ClassTest classTest(string("hello world"));/**< 只能用于直接初始化 */
  6. //ClassTest classTest = "Hello world!";/*無法實現從char[]先轉化為string,在由string轉換為類類型*/
  7. cout << classTest.getValue()<< endl;
  8. return0;
  9. }



來自為知筆記(Wiz)



轉載于:https://www.cnblogs.com/fengkang1008/p/4652252.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/374776.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/374776.shtml
英文地址,請注明出處:http://en.pswp.cn/news/374776.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

負數的 %求余和取模

1.求余和取模是不同的 2.‘%’ 在C/C&#xff0c;Java等語言中意為 求余 &#xff0c;在python 中意為 取模 3.a%b c 求余: c的符號和a一致 取模&#xff1a;c的符號和b一致 比如&#xff0c;一個小李子&#xff1a; public class Solution{public static void main(String…

PAT-BASIC-1038-統計同成績學生

本題要求讀入N名學生的成績&#xff0c;將獲得某一給定分數的學生人數輸出。 輸入格式&#xff1a; 輸入在第1行給出不超過105的正整數N&#xff0c;即學生總人數。隨后1行給出N名學生的百分制整數成績&#xff0c;中間以空格分隔。最后1行給出要查詢的分數個數K&#xff08;不…

JavaScript事件處理的三種方式(轉)

一、什么是JavaScript事件&#xff1f;事件(Event)是JavaScript應用跳動的心臟&#xff0c;也是把所有東西粘在一起的膠水&#xff0c;當我們與瀏覽器中Web頁面進行某些類型的交互時&#xff0c;事件就發生了。 事件可能是用戶在某些內容上的點擊、鼠標經過某個特定元素或按下鍵…

Erlang與Java內存架構

我讀了一篇關于Erlang VM的內存管理策略的非常非常有趣的文章。 它是Jesper Wilhelmsson撰寫的論文 &#xff0c;我認為討論Erlang的內存設置和Oracle的Java VM之間的差異可能會很好。 作為對從未聽說過Erlang的人的真正的簡短介紹; 它是一種功能語言&#xff0c;使用異步消息傳…

Xuggler教程:轉碼和媒體修改

注意&#xff1a;這是我們的“ Xuggler開發教程 ”系列的一部分。 在之前的教程中&#xff0c;我對視頻處理Xuggler進行了簡短介紹 。 在這一部分中&#xff0c;我們將看到Xuggler和FFmpeg提供的一些更令人興奮的功能&#xff0c;例如視頻轉碼和媒體修改。 不要忘記Xuggler是一…

Web工程師必備的43款可視化工具

國外站點DATAVISUALIZATION.CH為大家總結出了當前熱用的43款可視化工具&#xff0c;包括Arbor、Chroma.js、D3.js、Google Chart Tools等&#xff0c;絕對讓你一飽眼福。 1.Arbor.js Arbor是一個免費的、可視化的圖形庫&#xff0c;基于矢量創建動態的連接圖。它為圖形組織和屏…

力扣7. 整數反轉

方法一&#xff1a;官方給的&#xff0c;自己懂了后照著敲了一遍 class Solution {public int reverse(int x) {int rev 0;while (x ! 0) {//if判斷條件過于復雜&#xff0c;我好不容易看懂了if (rev < Integer.MIN_VALUE / 10 || rev > Integer.MAX_VALUE / 10) {retu…

AndroidManifest.xml中的application中的name屬性

被這個不起眼的屬性折磨了一天&#xff0c;終于解決了。 由于項目需要&#xff0c;要合并兩個android應用&#xff0c;于是拷代碼&#xff0c;拷布局文件&#xff0c;拷values&#xff0c;所有的都搞定之后程序還是頻頻崩潰&#xff0c;一直沒有找到原因&#xff0c;學android…

完美單身

我不時遇到一些Java程序員&#xff0c;他們不確定他們應該如何正確實現Singleton模式。 &#xff08;如果您不知道什么是Singleton&#xff0c;請嘗試Wikipedia&#xff1a; Singleton模式 &#xff09;。 我并不是在談論在線程環境中的正確實現。 但是&#xff0c;使用最常見的…

力扣移動零

給定一個數組 nums&#xff0c;編寫一個函數將所有 0 移動到數組的末尾&#xff0c;同時保持非零元素的相對順序。 我寫的代碼思路是從開始元素找0&#xff0c;找到了就將這個0后面的元素向前移一位 class Solution {public void moveZeroes(int[] nums) {int n nums.length;…

Doclava:來自Google的自定義Javadoc Doclet

Doclava是Google的自定義Javadoc Doclet&#xff0c;由Google Guice使用&#xff08;請參閱稍冷的 Javadocs &#xff09;。 Doclava使用JSilver作為其模板引擎&#xff0c;這是Clearsilver的純Java實現。 我個人喜歡聯合文檔的想法&#xff0c;它允許文檔在打開的項目上相互鏈…

linux cat顯示若干行

【一】從第3000行開始&#xff0c;顯示1000行。即顯示3000~3999行 cat filename | tail -n 3000 | head -n 1000 【二】顯示1000行到3000行 cat filename| head -n 3000 | tail -n 1000 *注意兩種方法的順序 分解&#xff1a; tail -n 1000&#xff1a;顯示最后1000行 tail -n …

【Stackoverflow好問題】java在,如何推斷陣列Array是否包括指定的值

問題java中&#xff0c;怎樣推斷數組Array是否包括指定的值精華回答1.Arrays.asList(...).contains(...) 2.使用 Apache Commons Lang包中的ArrayUtils.containsString[] fieldsToInclude { "id", "name", "location" };if ( ArrayUtils.contai…

力扣移除元素

給你一個數組 nums 和一個值 val&#xff0c;你需要 原地 移除所有數值等于 val 的元素&#xff0c;并返回移除后數組的新長度。 不要使用額外的數組空間&#xff0c;你必須僅使用 O(1) 額外空間并 原地 修改輸入數組。 元素的順序可以改變。你不需要考慮數組中超出新長度后面…

在域驅動設計中使用狀態模式

域驅動設計&#xff08;DDD&#xff09;是一種軟件開發方法&#xff0c;其中&#xff0c;通過將實現與核心業務概念的不斷發展的模型相連接&#xff0c;可以解決問題的復雜性。 該術語是由Eric Evans創造的&#xff0c;并且有一個DDD專用站點可以促進其使用。 根據其定義&#…

使用selenium進行密碼破解(繞過賬號密碼JS加密)

經常碰到網站&#xff0c;賬號密碼通過js加密后進行提交。通過burp攔截抓到的賬號密碼是加密后的&#xff0c;所以無法通過burp instruder進行破解。只能模擬瀏覽器填寫表單并點擊登錄按鈕進行破解。于是想到了自動化web測試工具selenium&#xff0c;代碼如下&#xff0c;測試效…

力扣刪除排序數組中的重復項

給你一個有序數組 nums &#xff0c;請你 原地 刪除重復出現的元素&#xff0c;使每個元素 只出現一次 &#xff0c;返回刪除后數組的新長度。 不要使用額外的數組空間&#xff0c;你必須在 原地 修改輸入數組 并在使用 O(1) 額外空間的條件下完成。 我沒注意到“有序”這一條…

POJ1789-Truck History .

題目鏈接&#xff1a;http://poj.org/problem?id1789 題目的大概意思就是給你n個字符串。每個字符串只有7的長度。然后分別給這些字符串編號。不同編號之間的距離就是他們有多少個不同的字母。&#xff08;同一個位置字母不相同也算&#xff09;然后一個編號只能由另一個派生…

Java Fork / Join進行并行編程

最近幾年&#xff0c;計算機處理器領域發生了范式轉變。 多年來&#xff0c;處理器制造商一直在提高時鐘頻率&#xff0c;因此開發人員享受到這樣的事實&#xff0c;即他們的單線程軟件執行得更快&#xff0c;而無需他們付出任何努力。 現在&#xff0c;處理器制造商青睞多核芯…

arm-elf-gcc交叉編譯器的使用教程

arm-elf-gcc交叉編譯器的使用教程 一開始需要安裝arm-elf-gcc&#xff0c;但是這是一個32位的程序&#xff0c;我是安裝了64位的系統&#xff0c;據說安裝ia32.libs依賴庫能運行這個&#xff0c;但是看到博客上面前人安裝完了系統圖標少了一半&#xff0c;然后就怕了。經過了翻…