C++ Primer Plus (第6版) 第13章編程題2

来源:http://www.cnblogs.com/htzhang0908/archive/2017/02/22/6430953.html
-Advertisement-
Play Games

第13章 類繼承 13.11 編程練習 第二題 1頭文件源碼:"classic.h" 2 頭文件實現: ...


第13章 類繼承

13.11 編程練習

第二題

1頭文件源碼:"classic.h"

 1 #ifndef CLASSIC_H_INCLUDED
 2 #define CLASSIC_H_INCLUDED
 3 
 4 class Cd
 5 {
 6 private:
 7     char *performers;
 8     char *label;
 9     int selections;
10     double playtime;
11 public:
12     Cd(char * s1, char * s2, int n, double x);
13     Cd();
14     Cd(const Cd & C);
15     virtual ~Cd();
16     virtual void Report() const;
17     Cd & operator=(const Cd &d);
18 };
19 
20 class Classic : public Cd
21 {
22 private:
23     char *details;
24 public:
25     Classic(char * s0, char * s1, char * s2, int n, double x);
26     Classic() {}
27     Classic(const Classic & C);
28     Classic(char * s0, const Cd  & d);
29     ~Classic();
30     virtual void Report() const;
31     Classic & operator=(const Classic & C);
32 
33 };
34 
35 #endif // CLASSIC_H_INCLUDED

 

2 頭文件實現:

  1 #include <iostream>
  2 #include <cstring>
  3 #include "classic.h"
  4 
  5 using std::cout;
  6 using std::endl;
  7 
  8 Cd::Cd(char * s1, char * s2, int n, double x)
  9 {
 10     int len1 = std::strlen(s1);
 11     int len2= std::strlen(s2);
 12     performers = new char[len1+1];
 13     label = new char[len2+1];
 14     std::strcpy(performers, s1);
 15     std::strcpy(label, s2);
 16     selections = n;
 17     playtime = x;
 18 }
 19 
 20 Cd::Cd()
 21 {
 22     performers = 0;
 23     label = 0;
 24     selections = 0;
 25     playtime = 0.0;
 26 }
 27 
 28 Cd::Cd(const Cd & C)
 29 {
 30     int len1 = std::strlen(C.performers);
 31     int len2= std::strlen(C.label);
 32     performers = new char[len1+1];
 33     label = new char[len2+1];
 34     std::strcpy(performers, C.performers);
 35     std::strcpy(label, C.label);
 36     selections = C.selections;
 37     playtime = C.playtime;
 38 }
 39 Cd::~Cd()
 40 {
 41     delete [] performers;
 42     delete [] label;
 43 }
 44 
 45 void Cd::Report() const
 46 {
 47     cout << "performers: " << performers << endl;
 48     cout << "label: " << label << endl;
 49     cout << "selection: " << selections << endl;
 50     cout << "playtime: " << playtime << endl;
 51 
 52 }
 53 
 54 Cd & Cd::operator=(const Cd &C)
 55 {
 56     if(this == &C)
 57         return *this;
 58     int len1 = std::strlen(C.performers);
 59     int len2= std::strlen(C.label);
 60     performers = new char[len1+1];
 61     label = new char[len2+1];
 62     std::strcpy(performers, C.performers);
 63     std::strcpy(label, C.label);
 64     selections = C.selections;
 65     playtime = C.playtime;
 66     return *this;
 67 }
 68 
 69 
 70 Classic::Classic(char * s0, char * s1, char * s2, int n, double x):Cd(s1, s2, n, x)
 71 {
 72     int len = std::strlen(s0);
 73     details = new char[len+1];
 74     std::strcpy(details, s0);
 75 }
 76 
 77 
 78 
 79 Classic::Classic(char * s0, const Cd &C):Cd(C)
 80 {
 81     details = new char[std::strlen(s0)+1];
 82     std::strcpy(details, s0);
 83 }
 84 
 85 Classic::Classic(const Classic & C):Cd(C)
 86 {
 87     int len = std::strlen(C.details);
 88     details = new char[len+1];
 89     std::strcpy(details, C.details);
 90 }
 91 
 92 Classic::~Classic()
 93 {
 94     delete [] details;
 95 }
 96 
 97 void Classic::Report() const
 98 {
 99     Cd::Report();
100     cout << "details: " << details << endl;
101 }
102 
103 Classic & Classic::operator=(const Classic & C)
104 {
105     if(this == &C)
106         return *this;
107     Cd::operator=(C);
108     delete [] details;
109     int len = std::strlen(C.details);
110     details = new char[len+1];
111     std::strcpy(details, C.details);
112     return *this;
113 }

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 題目1:創建一個名為Gerbil的類,該類擁有一個整數域gerbilNumber,通過構造器初始化gerbilNumber。創建方法hop()顯示該對象的gerbilNumber,以及“is hopping.” 創建一個ArrayList,並將Gerbil對象添加到該List中。用get()方法遍歷 ...
  • 1.PHP程式員玩轉Linux系列-怎麼安裝使用CentOS 2.PHP程式員玩轉Linux系列-lnmp環境的搭建 有些同學可能覺得我寫的都是啥yum安裝的,隨便配置一下而已,沒啥技術含量,我的目的是讓大家能夠以最簡單的方式實現目的,配置也是能不自定義的的統統不配置,不是為了炫耀會編譯安裝,我覺得 ...
  • OpenCL是一個並行異構計算的框架,包括intel,AMD,英偉達等等許多廠家都有對它的支持,不過英偉達只到1.2版本,主要發展自己的CUDA去了。雖然沒有用過CUDA,但個人感覺CUDA比OpenCL更好一點,但OpenCL支持面更管,CPU,GPU,DSP,FPGA等多種晶元都能支持OpenC ...
  • 上一節我們講過瞭如何在CentOS7.0下安裝MySql服務,如果沒有看到歡迎頁面的朋友,可以加我的個人微信詳聊:litao514148204 附上一節地址:http://www.cnblogs.com/riverdubu/p/6426852.html 關於php-fpm nginx本身不能處理PH ...
  • 1.base64編碼轉換 所謂base64編碼,即按照規則把字元轉化為"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"這個字元集中的字元。具體規則如下: a.把每3個位元組為一組,共24bit。每6bit一小組,每組前 ...
  • 一、從URL讀取並返回html樹 1.1 Rcurl包 使用Rcurl包可以方便的向伺服器發出請求,捕獲URI,get 和 post 表單。比R socktet連接要提供更高水平的交互,並且支持 FTP/FTPS/TFTP,SSL/HTTPS,telnet 和cookies等。本文用到的函數是bas ...
  • PHP驗證 第一步:先獲取表單傳送過來的內容; $_POST['']; //用這個函數來獲取表單的數據,POST必須大寫,中括弧裡面必須有單引號。 第二步:判斷 1判斷是否為正常提交: isset(); //用這個函數來判斷是否設置(存在) 例:if(isset($_POST['username'] ...
  • Scala入門 【1】 轉載請註明出處: "http://www.cnblogs.com/BYRans/" 1 基礎 val定義的為常量,var為變數 val name:Type = ,變數名後加冒號,然後定義變數類型 Scala有7種 數值類型 :Byte、Char、Short、Int、Long、 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...