不用友元,訪問類的私人成員變數的方法

   雖然沒有現實意義,但對理解C++的物件模型是很有協助的。    前幾天,在論壇裡看到一個文章,內容是:     (原帖見:http://community.csdn.net/Expert/topic/5014/5014384.xml?temp=.3018152)     ========================================     class   a     {     private:     int   k;     };    

讀《大話設計模式》---代理模式(proxy)

代理模式(proxy)為其他對象提供一個代理以控制對這個對象的訪問。結構圖//Subject類,定義了RealSubjext和Proxy的公用介面,這樣就在任何使用RealSubject的地方可以使用Proxy class Subject{public:    virtual void Request() = 0;};//RealSubject類,定義Proxy所代表的真實實體

VC++下具名管道編程的原理及實現

概述管道(Pipe)實際是用於處理序間通訊的一段共用記憶體,建立管道的進程稱為管道伺服器,串連到一個管道的進程為管道客戶機。具名管道(Named Pipes)是在管道伺服器和一台或多台管道客戶機之間進行單向或雙向通訊的一種命名的管道。一個具名管道的所有執行個體共用同一個管道名,但是每一個執行個體均擁有獨立的緩衝與控制代碼,並且為客戶——服務通訊提供有一個分離的管道。執行個體的使用保證了多個管道客戶能夠在同一時間使用同一個具名管道。Microsoft Windows NT、Windows 2000

大值的儲存和表示

#include   <stdio.h>   #include   <iostream>   using   namespace   std;   int   main()   {       int   data[51];       /*   儲存50位元,為了方便記憶,不適用data[0]   */       int   index = 1;      /*   表示數組中的位元   */       int   n;           /* 準備計算的數值 *

模板方法模式(Template Method)案例分析

案例分析:一個支援在螢幕上繪圖的類View。一個視圖只有在進入焦點狀態後時才可以設定合適的特定繪圖狀態,因而只有成為“焦點”之後才可以進行繪圖。View類強制其子類遵循這個規則。我們用Display模板方法來解決這個問題。View定義兩個具體方法,SetFocus和ResetFocus,分別設定和清除繪圖狀態。 View的Dodisplay鉤子操作實施真正的繪圖功能。 意圖:定義一個操作中演算法的架構,將一些步驟延遲到其子類中。這裡就是將繪圖的具體工作,延遲到View類的衍生類別中。 結構圖: 

抽象原廠模式(Abstract Factory)案例分析

案例分析:        每台汽車都要有發動機和輪胎等組件,但不同品牌的汽車所用的組件應該是不同的,汽車生產廠可以有不同的生產線,每個生產線負責生產某一型號的汽車組件。例如某廠有兩條生產線,一條生產寶馬的組件,一條生產寶萊車的組件。客戶要買什麼車,就啟動相應的生產線。 意圖:         提供一個建立一系列相關會相互依賴對象的介面,而無須制定他們具體的類。這裡結合案例將建立兩條生產線,分別生產寶馬和寶萊汽車的輪胎和引擎。 結構圖:   程式碼:#include <iostream.h&

F:Help Johnny

Problem F: Help JohnnyTime Limit: 1 Sec  Memory Limit: 128 MBSubmit: 66  Solved: 23[Submit][Status][Web Board]DescriptionPoor Johnny is so busy this term. His tutor threw lots of hard problems to him and demanded him to accomplish those problems in

裝飾模式(DECORATOR)案例分析

案例分析:我們去超市買東西,會收到購物小票,上面是你購買的物品名稱、數量、單價及總價等資訊,以及購物時間,收銀員號碼等最基本的資訊,這些是基本不變的。不過有時超市還會在這張票據的上面或下面列印其他資訊,例如:歡迎辭、促銷廣告等,而且這些資訊的內容及列印位置也不固定,相當於是對購物小票的額外裝飾了。意圖:為一個對象動態串連附加的指責。根據案例,本程式可為購物小票動態添加各種抬頭和注釋。描述:裝飾模式是一種對象結構型模式,這種模式主要用於對象結構圖: 程式碼:#include

Factory 方法模式(Factory Methond)案例分析

案例分析:Factory 方法定義一個用於建立對象的介面,但是讓子類決定執行個體化哪個類。壓注成型示範了這種模式。塑料玩具製造商加工塑料粉,將塑料注入到希望形狀的模具中。玩具的類別(車,人物等等)是由模具決定的。意圖:它的用意是定義一個建立產品對象的工廠介面,將實際建立工作延遲到子類中。在Factory

H: Matrix Multiplication

Problem H: Matrix MultiplicationTime Limit: 1 Sec  Memory Limit: 128 MBSubmit: 60  Solved: 18[Submit][Status][Web Board]DescriptionJohnny and John are good friends. Johnny is going to take the entrance exams for postgraduate schools. Recently, he is

策略模式(STRATEGY)案例分析

案例分析:有許多經典的排序演算法,分別適合不同的資料結構,利用策略模式在排序對象中封裝了不同的排序演算法,這樣以便允許用戶端動態替換排序策略(包括Quicksort、Shellsort和Mergesort)。 意圖:策略模式屬於對象行為型模式,主要針對一組演算法,將每個演算法封裝到具有共同介面的獨立類中,從而使得它們可以相互替換。 結構圖:   程式碼:#include <iostream.h> class SortFun{public:     virtual void sort(

享元模式(Flyweight)案例分析

Flyweight享元設計模式是一種結構型設計模式,它主要解決的問題是:由於(同類)對象的數量太大,採用物件導向時給系統帶來了難以承受的記憶體開銷。比如有這樣一個情境:一個停車場中有1000輛汽車,我們所定義的汽車對象佔用記憶體0.3M,那麼要執行個體化1000輛就是300M。由此可見,在這種情況下採用一般的物件導向方式出現了大量細粒度的對象會很快充斥在系統中,從而帶來很高的運行是代價(這裡指的代價是記憶體開銷的代價)。       

代理模式(Proxy)案例分析

案例分析         小李想要看奧運會的比賽,這樣的話,他必須提前訂票,可以通過組委會定票,然後在規定的日子去取票,不光小李,所有的觀眾必須都通過這個途徑訂票。 意圖        

適配器模式(ADAPTER)案例分析

[案例]朋友從美國給我帶回一個微波爐,但因為美國的生活用電電壓是110V,而中國的電壓是220V,所以我不能使用,幸好朋友有先見之明,給我帶回一個變壓器,能把220V電壓轉換成110V電壓,我才可以放心使用了。[意圖]把一個類的借口轉換成用戶端所期待的另一種介面,從而使原介面不匹配而無法在一起工作的兩個類能在一起工作。本程式通過適配,使c220類能在c110類中使用。 程式碼:#include <iostream.h> class c220v{public:    void

讀《大話設計模式》---面板模式(Facade)

面板模式:為子系統中的一組介面提供一個一致的介面,此模式定義了一個高層介面,這個介面使得一個子系統更加容易使用 面板模式結構圖 面板模式的一般實現方法:#include <iostream>

橋接模式(BRIDGE)案例分析

案例分析:一個普通的開關控制的電燈、電風扇等等,都是橋接的例子。開關的目的是將裝置開啟或關閉。實際的開關可以是簡單的雙刀拉鏈開關,也可以是調光開關。 意圖:橋接模式將抽象部分與它的實現分離,使它們能夠獨立地變化。案例中開關控制的對象和具體開關的類型都是可能變化的,本程式就將它們封裝,具體的實現在起各自的衍生類別中完成。 結構圖:程式碼:#include <iostream.h>//主要目的是為了將實現和抽象分離//以下的類為實現部分,用來將實現分離出來class

建構函式初始化表的使用規則

(1)如果類存在繼承關係,衍生類別必須在其初始化表裡調用基類的建構函式。class A{public:    A(int x);};class B : public A{public:    B(int x, int y);};//如果A沒有預設建構函式,必須在初始化表裡調用A的建構函式.B::B(int x, int y)      :A(x)        {}(2)類的const常量只能在初始化表裡被初始化,因為它不能在函數體內用賦值的方式來初始化。     class A     {  

為含指標變數的類聲明一個拷貝建構函式和一個賦值操作符

C++編譯器會為每個類自動產生一個預設的建構函式、解構函式、賦值函數、拷貝建構函式,這當然是在你沒有為你的類聲明這些函數的時候。這些預設的功能函數在為你提供方便的時候,也會給你帶來麻煩。例如:class string {public:  string(const char *value);  ~string();   ...                           // 沒有拷貝建構函式和operator= private:  char *data;};

面板模式(FACADE)案例分析

 案例分析:消費者撥打一個號碼與客服代表聯絡,客服代表則扮演了這個"外觀",他包含了與訂貨部、收銀部和送貨部的介面。 意圖:為子系統中的一組介面提供一個一致的介面,定義一個高層的介面,這個介面使得這個子系統更加容易使用。這裡DingHuo、ShouYin、SongHuo都是子系統,通過 KeFu為它們提供一致的介面。 結構圖:程式碼:#include <iostream.hclass DingHuo{public:     void DH()     {         cout<&

讀大《話設計模式》---簡單原廠模式(SimpleFactory)(一)

[說明]簡單原廠模式是類的建立模式,又叫做靜態Factory 方法(Static Factory Method)模式。 簡單原廠模式是由一個工廠對象決定建立出那一種產品類的執行個體。原廠模式的幾種形態原廠模式專門負責將大量有共同介面的類執行個體化。原廠模式可以動態決定將哪一個類執行個體化,不必事Crowdsourced Security Testing道每次要執行個體化哪一個類。原廠模式有以下幾種形態:簡單工廠(Simple Factory)模式,又稱靜態Factory 方法模式(Static 

總頁數: 61357 1 .... 20308 20309 20310 20311 20312 .... 61357 Go to: 前往

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.