C++ 程式碼重用 05-- 19.25-2.保護繼承 公有私有和保護繼承的不同
#include <iostream> using namespace std; /*--------------------------------- 19.25-2.保護繼承 變化 | 公有繼承 | 保護繼承 | 私有繼承 基類的公有成員變成 | 派生類的公有成員 | 派生類的保護成員 | 派生類的私有成員 基類的保護成員變成 | 派生類的保護成員 | 派生類的保護成員 | 派生類的私有成員 基類的私有成員變成 | 只能通過基類的介面訪問 ---------------------------------*/ class A { public: void set(int a,int b){x=a;y=b;} void show(){ cout<<x<<endl<<y<<endl;} protected: int x; private: int y; }; class B:protected A { public: void setb(int a,int b){ set(a,b);} //基類的公有成員函式set被保護派生後,不能直接訪問,但可以這樣間接訪問 void setxy(int a,int b) { x=a; //基類的保護成員被保護繼承後,能夠間接訪問 //y=b; //編譯報錯,基類的私有成員被保護繼承後,不可直接訪問的,也不能間接訪問 } void showb(){ show();} }; int main() { B b; //b.set(1,2);//編譯報錯,基類的公有成員函式set被保護派生後,不能直接訪問 //b.show(); //編譯報錯,基類的公有成員函式show被保護派生後,不能直接訪問 /*修改如下*/ b.setb(1,2); b.showb(); cout<<"----------"<<endl; b.setxy(3,4); b.showb(); return 0; }
執行結果:
1
2
----------
3
2
Press any key to continue
相關推薦
C++ 程式碼重用 05-- 19.25-2.保護繼承 公有私有和保護繼承的不同
#include <iostream> using namespace std; /*--------------------------------- 19.25-2.保護繼承 變化 |
c++ 程式碼重用
1. string類用來處理字串,valarray類用來處理數值。 2. 公有繼承,類可以繼承介面和實現;組合關係,獲得實現,不能獲得介面。 3. 類成員使用建構函式初始化時,初始化的順序是成員被類宣告的順序,而不是建構函式的成員列表的順序。 4. 使用包含時將使用物件名來呼叫基類方法,
Sublime text 3開啟C程式碼經常是tabsize為2的解決辦法
問題: 使用Sublime text 3.1.1開啟c原始碼,會看到右下角的Spaces: 2的提示, 而實際上是設定為tab_size為4的, 解決辦法: 1、原因在於設定中還有一項“detect_indentation”, 該項設定為tru
2018-05-19 css-2
css id選擇器 id選擇器 id選擇器可以為標有特定id的html元素制定特定的樣式 id選擇器以”#”來定義。 下面的兩個id選擇器,第一個可以定義元素的顏色為紅色,第二個定義元素的顏色為綠色: #red {color:red;} #gree
C++ 多執行緒框架 (2):Mutex 互斥和 Sem 訊號量
互斥和訊號量是多執行緒程式設計的兩個基礎,其原理就不詳細說了,大家去看看作業系統的書或者網上查查吧。 對於互斥的實現,無論什麼作業系統都離不開三個步驟 1.初始化互斥鎖 2.鎖操作 3.解鎖操作 對於不同的系統只是實現的函式有一些不同而已,但是功能其實都大同小異,在
C++繼承:公有,私有和保護
公有繼承(public)、私有繼承(private)、保護繼承(protected)是常用的三種繼承方式。 1. 公有繼承(public) 公有繼承的特點是基類的公有成員和保護成員作為派生類的成員時,它們都保持原有的狀態,而基類的私有成員仍然是私有的,不能被這個派生類的子類所訪問。 2. 私有繼承(
C語言進階指南(2)丨數組和指針、打樁
編譯器 atexit text ret The 共享 tex 語言 .org 三、指針和數組 盡管在某些上下文中數組和指針可相互替換,但在編譯器看來二者完全不同,並且在運行時所表達的含義也不同。 當我們說對象或表達式有類型的時候,我們通常想的是定位器值的類型,也叫做左值
More Effective C++: 05技術(25-28)
print div 子類 text 不可移植 double 默認 一次 theme 25:將constructor 和 non-member functions 虛化 所謂 virtual constructor是某種函數,視其輸入可產生不同類型的對象。比
C++PrimerPlus學習之C++中的程式碼重用
has-a關係 包含物件成員的類 易於理解及使用 可包含多個基類,易於區分。 建構函式初始化的是成員物件,而不是繼承的物件,所以在初始化列表中使用的是成員名,而不是類名。 當初始化列表包含多個專案時,這些專案被初始化的順序為
第14章 C++中的程式碼重用
本章內容包括: has-a關係 包含物件成員的類 模板類valarray 私有和保護繼承 多重繼承 虛基類 建立類模板 使用類模板 模板的具體化 通常,包含,私有繼承和保護繼承用於實現has-a關係,即新的類將包含另一個類的物件.&n
課程設計之四位加法計算器(2)(C程式碼)
#include<reg52.h> typedef unsigned char uint8; typedef unsigned int uint16; sbit rw=P2^5; sbit rs=P2^6; sbit e=P2^7; sbit led=P3
C++Primer Plus筆記——第十四章 C++中的程式碼重用總結及程式清單
目錄 本章小結 程式清單 本章小結 C++提供了幾種重用程式碼的手段。第13章介紹的公有繼承能夠建立is-a關係,這樣派生類可以重用基類的程式碼。私有繼承和保護繼承也使得能夠重用基類的程式碼。但建立的
C++Primer Plus筆記——第十四章 C++中的程式碼重用課後程式設計練習答案
程式設計練習答案 習題1 習題2 習題3 習題4 習題5 習題1 //winec.h #ifndef WINEC_H_ #define WINEC_H_ #include <iostream> #include <strin
【C/C++程式碼練習11】1-1/2+1/3-1/4+...+1/n的兩種計算方法
方法一: #include <stdio.h> #include <math.h> int main(void) { int n; scanf("%d",
影象處理之其他雜項(一)之MeanShift的目標跟蹤演算法opencv c++程式碼 VS2015+opencv3.2
//#include "stdafx.h" //#include "cv.h" //#include "highgui.h" #include<opencv.hpp> #define u_char unsigned char #define DIST 0.5 #define
C++中的程式碼重用(七)=>模板友元
對於模板的友元一般分為三種: 1.非模板友元 2.約束模板函式 3.非約束模板函式 例子如下所示 //class_friend.h #ifndef CLASS_FRIEND_H #define CLASS_FRIEND_H /*非模板友元*/ #include<iostre
C++中的程式碼重用(六)
成員模板 //example.h #ifndef _EXAMPLE_H_ #define _EXAMPLE_H_ /*模板類和模板函式一樣也存在隱、顯式例項化以及顯式例項化,部分具體化*/ /*模板成員*/ #include<iostream> template<t
第十八週專案實踐3.1(2)程式設計處理c程式碼
/****************************************************** Copyright (c) 2016,煙臺大學計算機學院 All rights reserved. 作者:張明明 完成日期:2016年12月31日 版本號:v1.
2-路歸併排序(C程式碼)及其時間複雜度的具體分析
時間複雜度: 這是一個遞推公式(Recurrence),我們需要消去等號右側的T(n),把T(n)寫成n的函式。其實符合一定條件的Recurrence的展開有數學公式可以套,這裡我們略去嚴格的數學證明,只是從直觀上看一下這個遞推公式的結果。當n=1時可以設T(1)=c1,當n>1
C++關於程式碼重用的那些事
C++的另一個目標是促進程式碼重用。公有繼承是實現這種目標的機制之一,但並不是唯一的機制。還可以使用這樣的類成員:本身是另一個類的物件,這種方法稱為包含、組合或層次化。另一種方法是使用私有繼承或保護繼承。類模板是另一種重用程式碼的方法,類模板使我們能夠使