色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

講一點Python類成員和C++類成員的構造區別

冬至子 ? 來源:鳴鳴鑼的小屋 ? 作者:Maxwell Luo ? 2023-07-21 17:40 ? 次閱讀

>>> 背景

如果同時寫兩種類型語言的代碼,難免有的時候會產生一點混淆,這也正是思維碰撞的時候。今天來講一點Python類成員和C++類成員的構造區別。在C++里面,就要求把類成員顯式地聲明出來,這樣才能夠在構造函數里面對成員進行初始化,就如下所示。

class A
{
public:
    int n_;
    A(int n) : n_(n){}
};

如果使用python定義類的話,類成員的定義和初始化都放在了構造函數里面,少了那么一點儀式感,就如下面所示。

class Dog:
    def __init__(self, m):
        self.m_ = m

這個時候如果硬是要為python類先聲明一個成員,從語法上也是可以的,如下所示。

class Dog:
    n_ = 0
    def __init__(self, n):
        self.n_ = n

這就引出了今天的問題,在python中像 n_ = **0 **這樣的語句,到底是什么含義呢?

>>> 解釋

其實在上述代碼中,為classDog創造了一個類靜態成員,該靜態成員為類所有的數據。而 self .m_ = m 才是為類的實例所有的數據。通過類靜態成員,可以管理一些實例無關的數據,比如某個數學類中的圓周率、已經創建的實例的個數等等。

如下面就通過 count** *** 這個類靜態成員,統計了實例化的次數;注意這里使用了 Dog.count*** ** 來訪問類靜態成員,而不是 self.count**_**。


class Dog:
    count_ = 0
    def __init__(self, n):
        self.n_ = n
        Dog.count_ += 1


if __name__ == '__main__':
    for i in range(3):
        g = Dog(2 * i)
        print(Dog.count_, " n: ", g.n_)
>>
1  n:  0
2  n:  2
3  n:  4

相比而言,C++創建類靜態成員的方法如下所示。使用關鍵字 static 來聲明一個靜態成員。對于非const類型的類靜態成員,C++還要求在類外部進行初始化,如int Dog::count = 0 ; 。

注意下面這種統計構造次數的方法僅僅是統計了普通構造,并沒有統計默認構造、拷貝構造或者賦值構造。通過析構函數可以看到,隨著對象的過期,對象的個數也逐漸減少到歸0了。

class Dog
{
public:
    static int count;
    int n_;
    Dog(int n): n_(n) { count++; }
    ~Dog() { count--; }
};


int Dog::count = 0;


int main()
{
    {
        Dog g1(0);
        cout < < Dog::count < < " n: " < < g1.n_ < < endl;
        Dog g2(2);
        cout < < Dog::count < < " n: " < < g2.n_ < < endl;
        Dog g3(4);
        cout < < Dog::count < < " n: " < < g3.n_ < < endl;
    }
    cout < < Dog::count < < endl;
}
>>
1 n: 0
2 n: 2
3 n: 4
0
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • C++語言
    +關注

    關注

    0

    文章

    147

    瀏覽量

    7021
  • python
    +關注

    關注

    56

    文章

    4807

    瀏覽量

    84970
收藏 人收藏

    評論

    相關推薦

    強大的matlab:在中實現static成員變量 (轉帖)

    不需要使用MATLAB的定義了。可是如果應用MATLAB開發具有工程應用型的程序,使用面向對象編程會具有不可比擬的優勢。懂C++的朋友應該都知道,C++個static
    發表于 03-07 10:42

    C++筆記004:C++通俗說—— C結構體復習

    ` 本帖最后由 tyyhmtyyhm 于 2018-5-12 09:37 編輯 C++通俗說—— C結構體復習核心:C++
    發表于 03-05 12:53

    vc的常用成員函數

    CRect:用來表示矩形的,擁有四個成員變量:top left bottom right。分別表是左上角和右下角的坐標。可以通過以下的方法構造
    發表于 08-02 06:33

    【微信精選】C++的精髓和繼承就該這么理解!

    中的公有成員C++繼承 以下例子:定義了個基base,定義了個子類sum,子類繼承了基
    發表于 08-15 09:41

    如何把C++的源程序改寫成C語言

    無所知對大家有好處,只是想說這種方法的與程序邏輯本身的無關性。下面對C++些特性,以及如何在c里實現或者替代,作些初步的探討:說明
    發表于 07-08 20:51

    如何把C++的源程序改寫成C語言

    無所知對大家有好處,只是想說這種方法的與程序邏輯本身的無關性。下面對C++些特性,以及如何在c里實現或者替代,作些初步的探討:說明
    發表于 07-11 09:34

    如何把C++的源程序改寫成C語言

    所要實現的功能還無所知。倒不是說無所知對大家有好處,只是想說這種方法的與程序邏輯本身的無關性。下面對C++些特性,以及如何在c里實現
    發表于 06-30 10:54

    如何把C++的源程序改寫成C語言

    方法的與程序邏輯本身的無關性。下面對C++些特性,以及如何在c里實現或者替代,作些初步的探討:說明:函數Ixx為xx的
    發表于 07-05 14:59

    如何把C++的源程序改寫成C語言

    無所知對大家有好處,只是想說這種方法的與程序邏輯本身的無關性。下面對C++些特性,以及如何在c里實現或者替代,作些初步的探討:說明
    發表于 07-07 09:31

    如何把C++的源程序改寫成C語言

    無所知對大家有好處,只是想說這種方法的與程序邏輯本身的無關性。下面對C++些特性,以及如何在c里實現或者替代,作些初步的探討:說明
    發表于 11-17 10:16

    成員函數與普通函數的區別研究

    本文的目的是研究成員函數與普通函數之區別,以及不同調用方式之間的區別,進而通過內聯匯編語句模仿特定的調用,從而完成通過普通函數指針調用
    發表于 09-15 14:52 ?32次下載

    C++的繼承訪問級別學習總結(二)

    篇文章我們介紹了c++的繼承學習總結;今天我們繼續來分享c++的繼承中的訪問級別的學習總結。
    的頭像 發表于 12-24 16:10 ?778次閱讀

    EE-128:C++中的DSP:從C++調用匯編成員函數

    EE-128:C++中的DSP:從C++調用匯編成員函數
    發表于 04-16 17:04 ?2次下載
    EE-128:<b class='flag-5'>C++</b>中的DSP:從<b class='flag-5'>C++</b>調用匯編<b class='flag-5'>類</b><b class='flag-5'>成員</b>函數

    的申明和成員函數定義分離是什么

    前面我們學習了如何定義,以及如何使用成員,在前面我們把成員函數都定義在了的內部,接下來我們學習,如何把
    的頭像 發表于 02-27 15:33 ?977次閱讀

    探索C++的編程習慣與編程要點

    C++可以分為帶指針數據成員與不帶指針數據成員,complex就屬于不帶指針成員
    的頭像 發表于 11-14 09:25 ?426次閱讀
    探索<b class='flag-5'>C++</b>的編程習慣與編程要點
    主站蜘蛛池模板: 日本一本免费线观看视频 | 伊人网伊人网 | 精品国产乱码久久久久久上海公司 | 嗯呐啊唔高H兽交 | 国产99久久九九精品无码不卡 | 4k岛国精品午夜高清在线观看 | 国产精品女主播主要上线 | 18女下面流水不遮网站免费 | 看黄色片子 | 免费可以看污动画软件 | 龙腾亚洲人成电影网站 | 理论片午午伦夜理片久久 | 亚洲精品成人a在线观看 | 久久无码AV亚洲精品色午夜 | 国产特级毛片AAAAAAA高清 | 翁公咬着小娇乳H边走边欢A | 97影院理论午夜伦不卡偷 | 欧美阿v天堂视频在99线 | 麻豆AV蜜桃AV久久 | J午夜精品久久久久久毛片 jzz大全18 | 久久视频在线视频观看精品15 | YELLOW免费观看完整视频 | 国产精品一区二区亚瑟不卡 | 女同给老师下媚药 | 乐乐亚洲精品综合影院 | 欧美xx69 | 久久不射视频 | 亚洲蜜桃AV永久无码精品放毛片 | 手机在线观看无码日韩视频 | 在线观看亚洲免费人成网址 | 红番阁免费观看 | 人妻仑乱少妇88MAV | a级精品九九九大片免费看 A级韩国乱理伦片在线观看 | 欧美精品一区二区三区视频 | 99欧美精品 | 一个人日本的视频免费完整版 | 小sao货ji巴cao死你视频 | 伊人久久中文 | 飘雪在线观看免费完整版 | 免费观看视频成人国产 | 亚洲中文在线偷拍 |