總結(jié):
1.常量數(shù)據(jù)成員,形式:const Type m_tData;
1)常量數(shù)據(jù)成員,需要在構(gòu)造函數(shù)列表中給出,構(gòu)造函數(shù)中可以用常量賦值,也可以實例化的時候賦值。
2)賦值函數(shù)中不能賦值,起到保護常量數(shù)據(jù)成員的作用,和友元作用相反。

創(chuàng)新互聯(lián)是一家以網(wǎng)絡(luò)技術(shù)公司,為中小企業(yè)提供網(wǎng)站維護、網(wǎng)站設(shè)計、成都做網(wǎng)站、網(wǎng)站備案、服務(wù)器租用、空間域名、軟件開發(fā)、成都小程序開發(fā)等企業(yè)互聯(lián)網(wǎng)相關(guān)業(yè)務(wù),是一家有著豐富的互聯(lián)網(wǎng)運營推廣經(jīng)驗的科技公司,有著多年的網(wǎng)站建站經(jīng)驗,致力于幫助中小企業(yè)在互聯(lián)網(wǎng)讓打出自已的品牌和口碑,讓企業(yè)在互聯(lián)網(wǎng)上打開一個面向全國乃至全球的業(yè)務(wù)窗口:建站聯(lián)系熱線:13518219792
2.常量成員函數(shù),形式:type funname(type1 arg1,type2 arg2,...) const
1)常量成員函數(shù),不能修改類數(shù)據(jù)成員,不能調(diào)用非常量函數(shù)。
2)常量成員函數(shù)的作用,可以有效的將類的函數(shù)分為可以修改類的函數(shù),和不能修改類的函數(shù);以后應(yīng)該善于使用常量成員函數(shù)。
3.返回常量的函數(shù),可以是常量指針,指針常量,常量,形式:
const type* funcname(type1 arg1,type2 arg2, ..)
type* const funcname(type1 arg1,type2 arg2, ..)
const funcname(type1 arg1,type2 arg2, ..)
他們的返回類型對于使用不是重要的,重要的是賦給的對象的類型決定了后續(xù)能夠進行的操作。
常量指針和指針常量都可以賦值給常量指針對象,常量指針對象可以進行p++操作,不能進行*p操作。
常量指針和指針常量都可以賦值給指針常量,但是指針常量只能進行*p操作,不能進行p++操作。
普通類型的返回常量的函數(shù),目的是為了讓成員函數(shù)返回值之間不能進行運算,防止產(chǎn)生丑陋的代碼,
返回值是常量的函數(shù),說明該類內(nèi)的這個值是外部使用者不能輕易改變的, 可以讓類的聲明的含義更加貼切,更加易于理解。
#include "stdafx.h"
#include <iostream>
using namespace std;
class CTest
{
public:
CTest(int nid, int nlimit):m_cntLimit(nlimit)
{
//m_cntLimit = nlimit;// 常量成員必須在構(gòu)造函數(shù)列表在中給出
m_nId = nid;
}
~CTest(){};
int GetID() const
{
//m_nId++;常量成員函數(shù)不能修改對象
//ClientGetObj();常量成員函數(shù)不能調(diào)用非常量成員函數(shù)
return m_nId;
}
CTest operator =(const CTest &b)
{
this->m_nId = b.m_nId;
//this->m_cntLimit = b.m_cntLimit;// 常量數(shù)據(jù)成員不能拷貝
return (*this);
}
int ClientGetID()
{
return GetID();
}
CTest* const GetObj()
{
return this;
}
CTest* ClientGetObj()
{
return this;
}
const int GetID()
{
return m_nId;
}
void Print()
{
cout<<"m_nId:"<<m_nId<<", const m_cntLimit"<<m_cntLimit<<endl;
}
void PrintCnt() const
{
cout<<"m_nId:"<<m_nId<<", const m_cntLimit"<<m_cntLimit<<endl;
}
private:
int m_nId;
const int m_cntLimit;
};
void main()
{
CTest Obj1(1, 1000);
CTest Obj2(2, 2000);
CTest* pObj = Obj1.ClientGetObj();
pObj->Print();
CTest objTemp = *(Obj1.ClientGetObj());
*pObj = *(Obj2.ClientGetObj());
pObj->Print();
// reset
*pObj = objTemp;
cout<<"-------------const display---------------"<<endl;
/*const */CTest* const pCntObj = Obj1.GetObj();//常量指針和指針常量都可以賦值給常量指針
pCntObj->PrintCnt();
*pCntObj = *(Obj2.GetObj());
pCntObj->PrintCnt();
/*const */int nid = pCntObj->GetID();// 常量返回值可以賦值給變量
nid++;
cout<<"new nid is:"<<nid<<endl;
//*pCntObj = *(Obj1.GetObj());// 常量指針對象,不能進行*p操作,可以進行p++操作
while(1);
}
分享標(biāo)題:C++常量成員常量返回值詳解
本文鏈接:http://www.chinadenli.net/article10/pesddo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信公眾號、虛擬主機、網(wǎng)站排名、網(wǎng)站設(shè)計、網(wǎng)站導(dǎo)航、網(wǎng)站營銷
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)