chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

C++之父子之間沖突的解決方法

電子設(shè)計(jì) ? 來(lái)源:電子設(shè)計(jì) ? 作者:電子設(shè)計(jì) ? 2020-12-24 15:59 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

一、父子之間的沖突:

1、思考

子類中是否可以定義父類中的同名成員?

如果可以的話,那么該怎樣區(qū)分呢?

如果不可以的話,那么又是為啥呢?

代碼實(shí)踐:

#include <iostream>
#include <string>
using namespace std;
class Parent

public:
int mi;
};
class Child : public Parent

public:
int mi;
};
int main()

Child c;

c.mi = 100; // mi 究竟是子類自定義的,還是從父類繼承得到的?

return 0;

代碼是否可以編譯通過(guò),我們來(lái)看一下編譯器編譯的結(jié)果:

root@txp-virtual-machine:/home/txp# g++ test.cpp
root@txp-virtual-machine:/home/txp#

什么情況,居然可以編譯情況,但是你從肉眼看,你看出到底是父類mi還是子類的mi呢,顯然我們不能夠去瞎猜,那么接下來(lái)我們來(lái)學(xué)習(xí)里面的真理!

2、父子之間沖突的規(guī)則:

子類可以定義父類中的同名成員

子類中的成員將隱藏父類中的同名成員

父類中的同名成員依然存在于子類中

通過(guò)作用域分辨符(::)訪問(wèn)父類中的同名成員,例如:

Child c;
c.mi = 100; //子類中的mi
c.Parent::mi = 1000; // 父類中的mi

代碼實(shí)踐:

#include <iostream>
#include <string>
using namespace std;
namespace A

int g_i = 0;

namespace B

int g_i = 1;// 同名的全局變量,但是位于兩個(gè)不同的命名空間;

class Parent

public:
int mi;

Parent()

cout << "Parent() : " << "&mi = " << &mi << endl;

};
class Child : public Parent

public:
int mi;

Child()

cout << "Child() : " << "&mi = " << &mi << endl;

};
int main()

Child c;

c.mi = 100;

c.Parent::mi = 1000;

cout << "&c.mi = " << &c.mi << endl;
cout << "c.mi = " << c.mi << endl;

cout << "&c.Parent::mi = " << &c.Parent::mi << endl;
cout << "c.Parent::mi = " << c.Parent::mi << endl;

return 0;

輸出結(jié)果:

root@txp-virtual-machine:/home/txp# g++ test.cpp
root@txp-virtual-machine:/home/txp# ./a.out
Parent() : &mi = 0x7ffc270e7bf0
Child() : &mi = 0x7ffc270e7bf4
&c.mi = 0x7ffc270e7bf4
c.mi = 100
&c.Parent::mi = 0x7ffc270e7bf0
c.Parent::mi = 1000

3、回顧重載:

(1)類中的成員函數(shù)可以進(jìn)行重載

重載函數(shù)的本質(zhì)為多個(gè)不同的函數(shù)

函數(shù)名和參數(shù)列表是唯一的標(biāo)識(shí)

函數(shù)重載必須發(fā)生在同一個(gè)作用域中,這一點(diǎn)非常關(guān)鍵

(2)子類中定義的函數(shù)是否能夠重載父類中的同名函數(shù)呢?

代碼實(shí)踐:

#include <iostream>
#include <string>
using namespace std;
class Parent

public:
int mi;

void add(int v)

mi += v;


void add(int a, int b)

mi += (a + b);

};
class Child : public Parent

public:
int mi;

void add(int v)

mi += v;


void add(int a, int b)

mi += (a + b);


void add(int x, int y, int z)

mi += (x + y + z);

};
int main()

Child c;

c.mi = 100;

c.Parent::mi = 1000;

cout << "c.mi = " << c.mi << endl;

cout << "c.Parent::mi = " << c.Parent::mi << endl;

c.a(chǎn)dd(1);
c.a(chǎn)dd(2, 3);
c.a(chǎn)dd(4, 5, 6);

cout << "c.mi = " << c.mi << endl;

cout << "c.Parent::mi = " << c.Parent::mi << endl;

return 0;

結(jié)果輸出:

root@txp-virtual-machine:/home/txp# g++ test.cpp
root@txp-virtual-machine:/home/txp# ./a.out
c.mi = 100
c.Parent::mi = 1000
c.mi = 121
c.Parent::mi = 1000

注解:從實(shí)驗(yàn)觀察來(lái)看,函數(shù)重名和成員重名的作用一樣,子類會(huì)覆蓋父類的。

為了更加說(shuō)明這點(diǎn),我們?cè)賮?lái)看一個(gè)示例:

#include <iostream>
#include <string>
using namespace std;
class Parent

public:
int mi;

void add(int v)

mi += v;


void add(int a, int b)

mi += (a + b);

};
class Child : public Parent

public:
int mi;



void add(int x, int y, int z)

mi += (x + y + z);

};
int main()

Child c;

c.mi = 100;

c.Parent::mi = 1000;

cout << "c.mi = " << c.mi << endl;

cout << "c.Parent::mi = " << c.Parent::mi << endl;

c.a(chǎn)dd(1);
c.a(chǎn)dd(2, 3);
c.a(chǎn)dd(4, 5, 6);

cout << "c.mi = " << c.mi << endl;

cout << "c.Parent::mi = " << c.Parent::mi << endl;

return 0;

編譯結(jié)果:

root@txp-virtual-machine:/home/txp# g++ test.cpp
test.cpp: In function ‘int main()’:
test.cpp:47:12: error: no matching function for call to ‘Child::add(int)’
c.a(chǎn)dd(1);

test.cpp:47:12: note: candidate is:
test.cpp:29:10: note: void Child::add(int, int, int)
void add(int x, int y, int z)

test.cpp:29:10: note: candidate expects 3 arguments, 1 provided
test.cpp:48:15: error: no matching function for call to ‘Child::add(int, int)’
c.a(chǎn)dd(2, 3);

test.cpp:48:15: note: candidate is:
test.cpp:29:10: note: void Child::add(int, int, int)
void add(int x, int y, int z)

test.cpp:29:10: note: candidate expects 3 arguments, 2 provided

注解:顯示匹配不到add(int)和add(int,int)這兩個(gè)函數(shù)

解決方案,就是利用作用域符分辨符解決問(wèn)題:

#include <iostream>
#include <string>
using namespace std;
class Parent

public:
int mi;
void add(int v)

mi += v;

void add(int a, int b)

mi += (a + b);

};
class Child : public Parent

public:
int mi;
void add(int x, int y, int z)

mi += (x + y + z);

};
int main()

Child c;
c.mi = 100;
c.Parent::mi = 1000;
cout << "c.mi = " << c.mi << endl;
cout << "c.Parent::mi = " << c.Parent::mi << endl;
c.Parent::add(1);
c.Parent::add(2, 3);
c.a(chǎn)dd(4, 5, 6);
cout << "c.mi = " << c.mi << endl;
cout << "c.Parent::mi = " << c.Parent::mi << endl;
return 0;

輸出結(jié)果:

root@txp-virtual-machine:/home/txp# ./a.out
c.mi = 100
c.Parent::mi = 1000
c.mi = 115
c.Parent::mi = 1006

4、小結(jié):

子類中的函數(shù)將隱藏父類的同名函數(shù)

子類無(wú)法重載父類中的成員函數(shù)(不在同一作用域里面)

使用作用域分辨符訪問(wèn)父類中的同名函數(shù)

子類可以定義類中完全相同的成員函數(shù)

二、總結(jié)

子類可以定義父類中的同名成員

子類中的成員將隱藏父類中的同名成員

子類和父類中的函數(shù)不能構(gòu)造重載關(guān)系

子類可以定義父類中完全相同的成員函數(shù)

使用作用域分辨符訪問(wèn)父類中的同名成員或者函數(shù)

好了,今天的分享就到這里,如果文章中有錯(cuò)誤或者不理解的地方,可以交流互動(dòng),一起進(jìn)步。我是txp,下期見(jiàn)!

審核編輯:符乾江
聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 可編程邏輯
    +關(guān)注

    關(guān)注

    7

    文章

    526

    瀏覽量

    45184
  • C++
    C++
    +關(guān)注

    關(guān)注

    22

    文章

    2120

    瀏覽量

    76444
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    IP地址沖突導(dǎo)致德國(guó)站群服務(wù)器斷網(wǎng)的解決方法?

    在網(wǎng)絡(luò)管理中,IP地址沖突是一個(gè)常見(jiàn)且令人頭疼的問(wèn)題。尤其是對(duì)于依賴站群服務(wù)器進(jìn)行大規(guī)模網(wǎng)絡(luò)操作的企業(yè)而言,IP沖突可能會(huì)導(dǎo)致整個(gè)服務(wù)器群組無(wú)法正常工作,從而造成嚴(yán)重的業(yè)務(wù)中斷。本文將探討如何解決因
    的頭像 發(fā)表于 08-12 15:47 ?498次閱讀

    C++ 與 Python:樹(shù)莓派上哪種語(yǔ)言更優(yōu)?

    廣泛應(yīng)用于樹(shù)莓派項(xiàng)目中。然而,C++在性能要求極高的應(yīng)用和底層硬件控制方面表現(xiàn)出色。兩者之間的選擇取決于項(xiàng)目需求和對(duì)編程的熟悉程度。嗯,這就是簡(jiǎn)短的答案,但讀完后
    的頭像 發(fā)表于 07-24 15:32 ?475次閱讀
    <b class='flag-5'>C++</b> 與 Python:樹(shù)莓派上哪種語(yǔ)言更優(yōu)?

    使用C++中的CyAPI編寫(xiě)的應(yīng)用程序上遇到了問(wèn)題,求解決

    我在使用 C++ 中的 CyAPI 編寫(xiě)的應(yīng)用程序上遇到了問(wèn)題。 我將 XferData() 方法與其他所有端點(diǎn)類型一起使用,沒(méi)有遇到任何問(wèn)題。 但是,將其與 Endpoint0 一起使用會(huì)引發(fā)
    發(fā)表于 05-13 06:11

    iic協(xié)議常見(jiàn)故障及解決方法

    SDA和時(shí)鐘線SCL)進(jìn)行通信。I2C協(xié)議以其簡(jiǎn)單性和低功耗特性,在嵌入式系統(tǒng)中得到了廣泛應(yīng)用。 常見(jiàn)故障 通信失敗 原因 :可能是由于總線沖突、設(shè)備地址錯(cuò)誤、數(shù)據(jù)線或時(shí)鐘線短路或斷路。 解決方法 :檢查總線連接,確保沒(méi)有短路或
    的頭像 發(fā)表于 02-05 11:38 ?3842次閱讀

    無(wú)功補(bǔ)償故障原因及解決方法

    無(wú)功補(bǔ)償故障可能由多種原因引起,以下是一些常見(jiàn)的故障原因及其解決方法
    的頭像 發(fā)表于 01-29 14:25 ?2261次閱讀

    Spire.XLS for C++組件說(shuō)明

    Spire.XLS for C++ 是一款專業(yè)的 C++ Excel 組件,可以用在各種 C++ 框架和應(yīng)用程序中。Spire.XLS for C++ 提供了一個(gè)對(duì)象模型 Excel
    的頭像 發(fā)表于 01-14 09:40 ?1142次閱讀
    Spire.XLS for <b class='flag-5'>C++</b>組件說(shuō)明

    電子焊接的常見(jiàn)問(wèn)題及解決方法

    問(wèn)題及解決方法: 焊點(diǎn)虛焊 原因分析 :虛焊是指焊點(diǎn)表面看似焊接良好,但實(shí)際上焊料與焊件之間沒(méi)有形成良好的冶金結(jié)合。虛焊的原因可能是焊接時(shí)間過(guò)短、焊接溫度過(guò)低、焊料質(zhì)量差等. 解決方法 :延長(zhǎng)焊接時(shí)間,確保焊料充分熔化
    的頭像 發(fā)表于 01-09 10:28 ?1581次閱讀

    同樣是函數(shù),在CC++中有什么區(qū)別

    同樣是函數(shù),在 CC++ 中有什么區(qū)別? 第一個(gè)返回值。 C語(yǔ)言的函數(shù)可以不寫(xiě)返回值類型,編譯器會(huì)默認(rèn)為返回 int。 但是 C++ 的函數(shù),除了構(gòu)造和析構(gòu)這兩個(gè)特殊的函數(shù),必須
    的頭像 發(fā)表于 11-29 10:25 ?1144次閱讀

    伺服電機(jī)常見(jiàn)故障及解決方法有哪些

    伺服電機(jī)在運(yùn)行過(guò)程中可能會(huì)遇到多種故障,以下是一些常見(jiàn)故障及其解決方法: 一、伺服電機(jī)不轉(zhuǎn)動(dòng) 故障原因 : 電源未連接或接觸不良。 驅(qū)動(dòng)器與電機(jī)之間的連接線斷裂或接觸不良。 驅(qū)動(dòng)器故障。 電機(jī)故障
    的頭像 發(fā)表于 11-20 09:48 ?6087次閱讀

    C7000 C/C++優(yōu)化指南用戶手冊(cè)

    電子發(fā)燒友網(wǎng)站提供《C7000 C/C++優(yōu)化指南用戶手冊(cè).pdf》資料免費(fèi)下載
    發(fā)表于 11-09 15:00 ?0次下載
    <b class='flag-5'>C</b>7000 <b class='flag-5'>C</b>/<b class='flag-5'>C++</b>優(yōu)化指南用戶手冊(cè)

    以太網(wǎng)組網(wǎng)常見(jiàn)故障及解決方法

    相互通信。 解決方法: 檢查網(wǎng)線是否損壞,使用網(wǎng)線測(cè)試儀進(jìn)行測(cè)試。 確保網(wǎng)線插頭(RJ45)插入到位,沒(méi)有松動(dòng)。 更換網(wǎng)線或接口,排除物理?yè)p壞的可能性。 檢查交換機(jī)和路由器的端口狀態(tài),確保它們正常工作。 2. IP地址沖突 故障現(xiàn)象: 網(wǎng)絡(luò)中
    的頭像 發(fā)表于 11-08 09:13 ?3889次閱讀

    TMS320C6000優(yōu)化C/C++編譯器v8.3.x

    電子發(fā)燒友網(wǎng)站提供《TMS320C6000優(yōu)化C/C++編譯器v8.3.x.pdf》資料免費(fèi)下載
    發(fā)表于 11-01 09:35 ?1次下載
    TMS320<b class='flag-5'>C</b>6000優(yōu)化<b class='flag-5'>C</b>/<b class='flag-5'>C++</b>編譯器v8.3.x

    C語(yǔ)言和C++中結(jié)構(gòu)體的區(qū)別

    同樣是結(jié)構(gòu)體,看看在C語(yǔ)言和C++中有什么區(qū)別?
    的頭像 發(fā)表于 10-30 15:11 ?966次閱讀

    C7000優(yōu)化C/C++編譯器

    電子發(fā)燒友網(wǎng)站提供《C7000優(yōu)化C/C++編譯器.pdf》資料免費(fèi)下載
    發(fā)表于 10-30 09:45 ?0次下載
    <b class='flag-5'>C</b>7000優(yōu)化<b class='flag-5'>C</b>/<b class='flag-5'>C++</b>編譯器

    常見(jiàn)GPU問(wèn)題及解決方法

    各種問(wèn)題。以下是一些常見(jiàn)的GPU問(wèn)題及其解決方法: GPU驅(qū)動(dòng)程序過(guò)時(shí)或不兼容 問(wèn)題描述:GPU驅(qū)動(dòng)程序是GPU與操作系統(tǒng)之間的橋梁,負(fù)責(zé)將操作系統(tǒng)的指令轉(zhuǎn)換為GPU可以理解的指令。如果驅(qū)動(dòng)程序過(guò)時(shí)或不兼容,可能會(huì)導(dǎo)致GPU性能下降、藍(lán)屏、死
    的頭像 發(fā)表于 10-27 14:12 ?4702次閱讀