亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
  • 基類成員訪問屬性? 繼承方式? 派生類成員訪問屬性

    private成員? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?無法訪問

    protect成員? ? ? ? ? ? public? ? ? ? ? protected

    public成員? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? public


    查看全部
    0 采集 收起 來源:[C++]公有繼承

    2020-04-08

  • void test1(Person p){p.play}調用test1的時候,因為在test1中所定義的參數是一個對象P,所以傳值的時候會先實例化臨時對象P,通過臨時對象P調用play這個函數,在test1執行完畢之后,p這個臨時對象就會被銷毀 如果函數的參數是基類的對象,那么基類的對象和派生類的對象,都可以作為實參傳遞進去,并且可以正常使用。 void test2(Person &p) ?沒有實例化臨時對象,使用基類的引用也可以接收基類的對象以及派生類的對象 void test3(Person *p)的調用結果和void test2(Person &p)一樣 因為不產生臨時變量,所以void test3(Person *p)、void test2(Person &p)效率更高

    查看全部
  • <table><tbody><tr class="firstRow"><td><code>Person&nbsp;*p=</code><code>new</code>&nbsp;<code>Soldier;</code><code>//用父類Person的指針指向堆中分配的子類Soldier的對象</code><code>delete</code>&nbsp;<code>p;</code><code>p=NULL;</code><code>//只執行父類的析構函數,而不執行子類的析構函數,可能導致內存泄露</code></td></tr></tbody></table><p>【如何在這種情況下防止內存泄露?】</p><p>虛析構函數:當存在繼承關系,且要用一個父類的指針指向堆中子類的對象,并希望用父類的指針釋放這塊內存時,可以使用。</p><table ><tbody><tr class="firstRow"><td>12345</td><td><code>class</code>&nbsp;<code>Person{</code><code>&nbsp;&nbsp;&nbsp;&nbsp;</code><code>Person();</code><code>&nbsp;&nbsp;&nbsp;&nbsp;</code><code>virtual</code><code>~Person();&nbsp;&nbsp;</code><code>//前面加關鍵字virtual即可,這個關鍵字可以被繼承下去</code><code>}</code><code>//在Soldier.h中,即使在~Soldier前面不寫virtual,也相當于有了這個關鍵字(被繼承下來了)</code></td></tr></tbody></table><p><br/></p>
    查看全部
  • 父類的指針指向子類對象的時候 ?只能訪問子類中父類原有的成員,而無法訪問子類中獨有的數據成員和成員函數 子類對象向父類對象賦值。或用子類對象初始化父類對象,本質是將子類當中從父類繼承下來的數據成員賦值給父類對象,而其他的數據將會被截斷,丟失。 父類指針指向子類對象。父類指針只能訪問父類原有的成員。

    查看全部
    0 采集 收起 來源:[C++]isA

    2020-03-23

  • 子類和父類的重名函數無法形成重載,只能進行隱藏

    查看全部
  • 遇到一個小問題,在使用#include<string>時,需要配套使用using namespace std;才可正常使用string,否則會出錯,也就是string類型應該是在std命名空間。以前一直僅把他當作#include<iostream>使用cout時的命名空間,現在想來應該是同名的命名空間。public Soldier : public Person<br> {<br> }<br> 注意只有一個':',不是兩個. 使用string類型必須包含<string> 聲明類的最后要加分號. undefined reference問題:一般是少了目標文件 g++ 編譯時要加入所有相關的.o文件 include包含頭文件時注意雙引號“”和尖括號<>是不同的,編譯器會搜索不同的路徑 (1)尖括號<>是引用C++自身文件庫里的頭文件,如<iostream> (2)雙引號“”則是引用用戶自己編寫的頭文件,如“Person.h”

    查看全部
  • A類有void ABC(),B類也有void ABC(),B類公有繼承A類,基類中的ABC()成員函數就會被B類中的ABC()成員函數隱藏,隱藏的特性體現在:當實例化B的對象的時候,使用該對象只能夠直接的訪問到子類B中的ABC()成員函數,而無法訪問父類中的ABC()成員函數 從語法的角度來說,同名的數據成員也具有隱藏的特征<br> 父子關系,成員同名,隱藏 對象調用同名的成員函數:直接soldier.play();調用的是自己的成員函數,如果要調用父類的成員函數,則需要加上父類的類名,soldier.Person::play()

    查看全部
    1 采集 收起 來源:[C++]隱藏

    2020-03-23

  • 公有繼承 class A:public B 保護繼承 class A:protected B 私有繼承 class A:private B 公有繼承時基類中各成員屬性保持不變,基類中private成員被隱藏。 派生類的成員只能訪問基類中的public/protected成員,不能訪問private成員; 派生類的對象只能訪問基類中的public成員。 保護繼承時基類中各成員屬性均變為protected,且基類中private成員被隱藏。派生類的成員只能訪問基類中的public/protected成員,不能訪問private成員;派生類的對象不能訪問基類中的任何的成員。 私有繼承時基類中各成員屬性均變為private,且基類中private成員被隱藏。派生類的成員也只能訪問基類中的public/protected成員,不能訪問private成員 派生類的對象不能訪問基類中的任何的成員。

    查看全部
  • ①通過public繼承的都是被繼承為派生類中所對應的訪問屬性(private例外),

    如:基類public通過public繼承為派生類中public;

    ????? ?基類protected通過public繼承為派生類中protected‘

    ????? ?基類private通過public繼承為無法訪問。

    ②通過protected繼承的都是被繼承為派生類中的protected訪問屬性(private例外),

    如:基類public通過通過protected繼承為派生類中protected;

    ???????基類protected通過protected繼承為派生類中protected;

    ????? ?基類private通過protected繼承為無法訪問。

    ③通過private繼承的都是被繼承為派生類中的protected訪問屬性(private例外),

    如:基類public通過通過private繼承為派生類中private;

    ???????基類protected通過private繼承為派生類中private;

    ????? ?基類private通過private繼承為無法訪問。

    https://img1.sycdn.imooc.com/5be1b3570001d5b412730341.jpg

    https://img2.sycdn.imooc.com/5be1b3580001ace712680353.jpg

    https://img3.sycdn.imooc.com/5be1b35900014a3113160355.jpg




    查看全部
  • 公有成員可以直接訪問,可以間接通過自身類的公有函數訪問,也可以通過子類的公有函數訪問?

    保護成員不可以直接訪問,可以間接通過自身類的公有函數訪問,也可以通過子類的公有函數訪問?

    私有成員不可以直接訪問,可以間接通過自身類的公有函數訪問,不可以通過子類的公有函數訪問

    private不能繼承、類外不能訪問,protected能繼承,類外不能訪問,public能繼承、類外能訪問??偨Y:權限:類外訪問 < 繼承 < 類內訪問。


    查看全部
  • 基類成員訪問屬性? 繼承方式? 派生類成員訪問屬性

    private成員? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?無法訪問

    protect成員? ? ? ? ? ? public? ? ? ? ? protected

    public成員? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? public


    查看全部
    0 采集 收起 來源:[C++]公有繼承

    2020-03-22

  • //聲明2個類class?Person{????public:????????Person();????????~Person();????????void?eat();????????string?m_strName;????????int?m_iAge;?};class?Worker:?public?Person{????public:????????Worker();????????~Worker();????????void?work();????????int?m_iSalary;};//定義2個類Person::Person()?{?????cout<<"Person()"<<endl;?}Person::~Person()??{??????cout<<"~Person()"<<endl;?????}void?eat(){????cout<<"eat()"<<endl;}???????//定義worker類的函數?Worker::Worker()?{?????cout<<"Worker()"<<endl;?}????Worker::~Worker()??{???cout<<"~Worker()"<<endl;?????}??void?work()??{???cout<<"work()"<<endl;??}???//應用??Worker?*p?=?new?Worker();??p->m_strName?=?"jim";??p->m_iAge?=?10;??p->eat();??p->m_iSalary?=100;??p->work();??delete?p;??p?=?NULL;??//先調用Person,再Worker,析構相反

    查看全部
    0 采集 收起 來源:代碼演示

    2020-03-22

  • 什么是繼承,為什么要繼承?

    基類----派生類

    父類 ----子類

    class worker : public person

    {

    public:

    ????void work();

    ????int m_iSalary;

    }

    //工人類繼承了人類,就不需要重新寫人類的屬性,只寫自己的屬性;工人類是人類的派生類,人類是工人類的基類;人類是父類,工人是子類。

    所以派生類和基類是一起組合,父類和子類是一起組合


    查看全部
    0 采集 收起 來源:為什么繼承

    2020-03-22

  • 多重繼承:比如,人類-士兵類-步兵類,

    class Person{};

    class Soldier:public Person {};

    class Infantryman:public Soldier{};

    多繼承:一個子類,同時有2個父類,或者一個派生類,有2個基類,這此種情況為多繼承。

    class Worker{};

    class Farmer{};

    class MigrantWOrker:public Worker, public Farmer{};


    查看全部
  • 父類和子類有同名的成員函數,但有不同的參數,此種情況也形成隱藏

    查看全部

舉報

0/150
提交
取消
課程須知
本課程是C++初級課程 熟練掌握C++語言基礎語法,如需要學習C++基礎語法的可以看《C++遠征之起航篇》、《C++遠征之離港篇》、《C++遠征之封裝篇(上)》、《C++遠征之封裝篇(下)》
老師告訴你能學到什么?
1、什么是繼承 2、基類和派生類的概念 3、繼承的三種方式 4、多重繼承和多繼承 5、虛繼承是怎么回事

微信掃碼,參與3人拼團

微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

友情提示:

您好,此課程屬于遷移課程,您已購買該課程,無需重復購買,感謝您對慕課網的支持!