亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C++ > 正文

C++成員函數—C++成員函數的定義和重載

2020-05-23 14:26:07
字體:
來源:轉載
供稿:網友
我們已經學會如何調用成員函數,那么成員函數又是如何聲明和定義的呢?它和普通函數有著什么異同點呢?

普通函數在使用之前必須聲明和定義,成員函數也是這樣。不過成員函數是屬于某一個類的,所以只能在類的內部聲明,即在定義類的時候寫明成員函數的函數原型,同時要注意此函數是公有的還是私有的。如果一個類的某個成員函數是私有的,那么它只能被這個類的其他成員函數調用。成員函數的函數原型和普通函數的函數原型在寫法上是一樣的。比如:
class Node//定義一個鏈表結點類
{
   public:
   int readi();//通過該函數讀取idata
   char readc();//通過該函數讀取cdata
   bool seti(int i);//通過該函數修改idata
   bool setc(char c);//通過該函數修改cdata
   bool setp(Node *p);//通過該函數設置前驅結點
   bool setn(Node *n);//通過該函數設置后繼結點
   private:
   int idata;//存儲數據保密
   char cdata; //存儲數據保密
   Node *prior;//前驅結點的存儲位置保密
   Node *next;//后繼結點的存儲位置保密
};

常成員函數

由于數據封裝在類的內部,在處理一些問題的時候就需要小心翼翼,不能把成員數據破壞了。以前我們介紹使用const來保護變量(就變成了常量),或保護指針所指向的內容,那么在類中,我們也可以使用const這個保留字來保護成員數據不被成員函數改變。我們把這種成員函數稱為常成員函數。它的寫法就是在函數的參數表后面加上一個const,比如:
    int readi() const;//通過該函數讀取idata,但不能改變任何成員數據
    char readc() const;//通過該函數讀取cdata,但不能改變任何成員數據
使用常成員函數,就保證了成員數據的安全,在此函數中任何修改成員數據的語句將被編譯器拒之門外。

成員函數的重載

和普通函數類似,在一個類中也可以有成員函數重載。成員函數的重載在規則上和普通函數也并無差別,這里不再贅述。
最終,我們將鏈表結點類的定義修改如下: 
class Node//定義一個鏈表結點類
{
   public:
   int readi() const;//通過該函數讀取idata,但不能改變任何成員數據
   char readc() const;//通過該函數讀取cdata,但不能改變任何成員數據
   bool set(int i);//重載,通過該函數修改idata
   bool set(char c);// 重載,通過該函數修改cdata
   bool setp(Node *p);//通過該函數設置前驅結點
   bool setn(Node *n);//通過該函數設置后繼結點
   private:
   int idata;//存儲數據保密
   char cdata; //存儲數據保密
   Node *prior;//前驅結點的存儲位置保密
   Node *next;//后繼結點的存儲位置保密
};

成員函數的定義

成員函數與普通函數的不同之處,在于成員函數是屬于某一個類的,而不能被隨意地調用。那么,我們在定義一個成員函數的時候如何來表達它是屬于某一個類的呢?這個時候我們就要用到::操作符,它表示該函數是屬于某一個類的,稱為域解析操作符。因此在類定義結束后,定義一個成員函數的格式如下:
返回值類型類名::函數名(參數表)
{
   語句;
   ……
}

事實上,成員函數也是可以在類的定義中定義的(此時不需要域解析操作符),但是從程序的運行效率、可讀性、美觀性考慮,我們建議將成員函數的定義完全放在類定義的外面。于是,鏈表結點類和其成員函數的定義如下:
//node.h
class Node//定義一個鏈表結點類
{
   public:
   int readi() const;//通過該函數讀取idata,但不能改變任何成員數據
   char readc() const;//通過該函數讀取cdata,但不能改變任何成員數據
   bool set(int i);//重載,通過該函數修改idata
   bool set(char c);//重載,通過該函數修改cdata
   bool setp(Node *p);//通過該函數設置前驅結點
   bool setn(Node *n);//通過該函數設置后繼結點
   private:
   int idata;//存儲數據保密
   char cdata;//存儲數據保密
   Node *prior;//前驅結點的存儲位置保密
   Node *next;//后繼結點的存儲位置保密 
};//類定義結束,分號切勿忘記
int Node::readi() const//成員函數readi的定義
{
   return idata;
}
char Node::readc() const
{
   return cdata;
}
bool Node::set(int i)//重載成員函數定義
{
   idata=i;
   return true;
}
bool Node::set(char c)
{
   cdata=c;
   return true;
}
bool Node::setp(Node *p)
{
   prior=p;
   return true;
}
bool Node::setn(Node *n)
{
   next=n;
   return true;
}

在上面這些成員函數定義中,我們可以看出成員數據(或成員函數)在成員函數中可以直接使用。平時我們使用一個對象的公有成員數據時,我們要寫作“對象名.成員數據”,但是在成員函數中不需要也不能那樣寫。接下來,我們就能嘗試一下使用我們編寫的類了:(程序14.3)
//main.cpp
#include <iostream>
#include "node.h"//包含我們編寫好的鏈表結點類頭文件,必須用雙引號
using namespace std;
int main()
{
   Node a;//創建一個鏈表結點對象a
   a.set(1);//設置idata
   a.set('A');//設置cdata
   cout <<a.readi() <<endl;
   cout <<a.readc() <<endl;
   return 0;
}
運行結果:
1
A
注意這個程序有兩個文件,一個是頭文件node.h,一個是源文件main.cpp。如果你忘記了如何創建一個頭文件,那么請看本書的11.2節。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产在线一区二区三区| 欧美日韩另类视频| 亚洲网址你懂得| 国产一区二区三区在线看| 国产精品旅馆在线| 亚洲三级黄色在线观看| 在线亚洲男人天堂| 国产欧美va欧美va香蕉在| 欧美一区二区大胆人体摄影专业网站| 成人国产精品一区| 亚洲自拍偷拍网址| 亚洲欧美精品在线| 亚洲男人天堂2019| 91成人天堂久久成人| 日本中文字幕不卡免费| 国产精品久久久久秋霞鲁丝| 日韩中文字幕网| 亚洲精品国产精品久久清纯直播| 日韩毛片在线看| 欧美激情在线观看视频| 狠狠久久五月精品中文字幕| 77777少妇光屁股久久一区| 国产精品视频白浆免费视频| 96pao国产成视频永久免费| 欧洲美女7788成人免费视频| 亚洲桃花岛网站| 高跟丝袜欧美一区| 韩剧1988免费观看全集| 激情懂色av一区av二区av| 国产一区二区三区日韩欧美| 亚洲xxx视频| 欧美激情精品久久久久久蜜臀| 久久久久久久久久久网站| 97久久久免费福利网址| 精品国产老师黑色丝袜高跟鞋| 国产精品99导航| 一区二区三区回区在观看免费视频| 欧美亚洲午夜视频在线观看| 日本人成精品视频在线| 久久91精品国产91久久跳| 亚洲第一页在线| 91在线观看免费| 亚洲性视频网站| 国产在线拍偷自揄拍精品| 亚洲视频在线观看免费| 中文字幕日韩在线视频| 琪琪第一精品导航| 日韩av观看网址| 亚洲精品日韩久久久| 日韩中文在线中文网在线观看| 欧美精品成人91久久久久久久| 青草青草久热精品视频在线观看| 91av中文字幕| 欧洲成人性视频| 久久av红桃一区二区小说| 精品无人区太爽高潮在线播放| 亚洲永久在线观看| 日韩av综合中文字幕| 国产精品劲爆视频| 成人国产精品免费视频| 日韩av手机在线观看| 福利一区福利二区微拍刺激| 最近2019中文字幕mv免费看| 国产精品成熟老女人| 中文字幕无线精品亚洲乱码一区| 日韩电影大片中文字幕| 亚洲在线免费视频| 影音先锋欧美精品| 欧美性videos高清精品| 欧美色视频日本版| 久久精品国产综合| 亚洲欧美制服综合另类| 国产视频精品久久久| 国产婷婷色综合av蜜臀av| 亚洲一区二区免费在线| 97国产真实伦对白精彩视频8| 精品久久久久久中文字幕| 日本在线观看天堂男亚洲| 亚洲高清免费观看高清完整版| 97人洗澡人人免费公开视频碰碰碰| 97激碰免费视频| 亚洲美女精品成人在线视频| 中文字幕日韩精品在线观看| 黑人欧美xxxx| 一区二区三区四区视频| 国产精品偷伦视频免费观看国产| 国产一区二区免费| 欧美高清激情视频| 久久97久久97精品免视看| 国产精品久久久久秋霞鲁丝| 青青草99啪国产免费| 国产精品免费视频久久久| 国产视频精品久久久| 欧美专区国产专区| 中文亚洲视频在线| 欧美在线视频导航| 欧洲日本亚洲国产区| 亚洲激情免费观看| 欧美麻豆久久久久久中文| 久热在线中文字幕色999舞| 亚洲欧美国产精品久久久久久久| 欧美日韩福利在线观看| 国产ts一区二区| 日韩免费在线看| 亚洲天堂免费视频| 这里只有视频精品| 色与欲影视天天看综合网| 日韩欧美亚洲成人| 中国日韩欧美久久久久久久久| 日韩成人性视频| 欧美激情第三页| 国产精品黄视频| 亚洲片国产一区一级在线观看| 久久久久久中文字幕| 欧美激情精品久久久久久黑人| 一区二区三区无码高清视频| 成人激情视频在线观看| 中文字幕亚洲欧美一区二区三区| 狠狠躁夜夜躁人人爽超碰91| 久久国产精品影片| 亚洲精品视频中文字幕| 国产亚洲日本欧美韩国| 国产欧美 在线欧美| 亚洲精品国产精品久久清纯直播| 91在线精品播放| 欧美激情综合色综合啪啪五月| 欧美一区二区.| 久久6精品影院| 国产精品白嫩美女在线观看| 国产欧美精品一区二区| 久久久久久有精品国产| 欧美日韩国产999| 九九久久精品一区| 国产一区二区动漫| 57pao成人永久免费视频| 国产精品久久久久久久久免费看| 久久久国产在线视频| 亚洲国产成人精品久久| 国内精品久久久久久| 久久久成人的性感天堂| 欧美日韩亚洲视频| 亚洲毛片在线免费观看| 欧美性受xxxx黑人猛交| 日韩在线欧美在线| 97精品久久久中文字幕免费| 久久久久久免费精品| 亚洲成人教育av| 欧美日韩一区二区在线播放| 91在线观看免费高清完整版在线观看| 国产精品亚洲第一区| 亚洲无亚洲人成网站77777| 欧美在线视频观看| 韩国精品美女www爽爽爽视频| 在线观看免费高清视频97| 91社影院在线观看| 国产日韩亚洲欧美| 亚洲深夜福利网站| 欧美俄罗斯性视频| 成人情趣片在线观看免费| 亚洲美女喷白浆| 夜夜嗨av色综合久久久综合网| 97国产精品视频人人做人人爱| 久久国产精品久久国产精品| 中文字幕精品www乱入免费视频|