日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

C++类与const关键字

發(fā)布時(shí)間:2025/4/5 c/c++ 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C++类与const关键字 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

?一句話概括:const成員變量參考C語言;const成員函數(shù)中,const寫在函數(shù)后面,如:func()const,const成員函數(shù)只能使用const成員變量,但不能修改const成員變量;const對(duì)象,該對(duì)象就只能調(diào)用類中的常成員函數(shù)了。如果要修改常對(duì)象中的成員變量,那么應(yīng)該將該對(duì)象設(shè)置為mutable(可變的)。

?

const成員變量

const成員變量其用法和普通的const變量用法相似,在定義時(shí)只需在前面加上const關(guān)鍵字即可。

?

const成員函數(shù)

const成員函數(shù)可以使用類中的所有成員變量,但是不能修改變量的值,這種措施主要還是為了保護(hù)數(shù)據(jù)而設(shè)置的。

常成員函數(shù)就是在聲明和定義的時(shí)候在函數(shù)頭部的結(jié)尾加上const關(guān)鍵字。

const對(duì)象

const對(duì)象定義的基本語法如下:
? ? const 類名 對(duì)象名(實(shí)參名);
? ? 類名 const 對(duì)象名(實(shí)參名);
這兩種定義方式都是可以的,我們一旦將對(duì)象定義為常對(duì)象之后,該對(duì)象就只能調(diào)用類中的常成員函數(shù)了。

#include<iostream> using namespace std;class book { public:book(){}book(book &b);book(char* a, double p = 5.0);void setprice(double a);double getprice()const;void settitle(char* a);char * gettitle()const;void display()const; private:double price;char * title; };book::book(book &b) {price = b.price;title = b.title; }book::book(char* a, double p) {title = a;price = p; }void book::display()const {cout<<"The price of "<<title<<" is $"<<price<<endl; }void book::setprice(double a) {price = a; }double book::getprice()const {return price; }void book::settitle(char* a) {title = a; }char * book::gettitle()const {return title; }int main() {const book Alice("Alice in Wonderland",29.9);Alice.display();Alice.setprice(51.0);//compile errorreturn 0; }

關(guān)鍵字mutable

有些時(shí)候我們?cè)诔绦蛟O(shè)計(jì)過程中要求修改常對(duì)象中的某個(gè)成員變量,這個(gè)時(shí)候如果是普通的成員變量是不能被修改的。為了滿足這一需求,C++提供了mutable關(guān)鍵字。

mutable int var;

通過這樣的聲明將變量var聲明為可變的成員變量,此時(shí)如果要修改常對(duì)象的該變量時(shí),只需要通過常對(duì)象調(diào)用const成員函數(shù)修改該變量即可。

對(duì)象的const引用

#include<iostream> using namespace std;class book { public:book(){}book(book &b);book(char* a, double p = 5.0);void setprice(double a);double getprice()const;void settitle(char* a);char * gettitle()const; private:double price;char * title; };book::book(book &b) {price = b.price;title = b.title; }book::book(char* a, double p) {title = a;price = p; }void book::setprice(double a) {price = a; }double book::getprice()const {return price; }void book::settitle(char* a) {title = a; }char * book::gettitle()const {return title; }void display(const book &b) {b.setprice(59.9); //compile errorcout<<"The price of "<<b.gettitle()<<" is $"<<b.getprice()<<endl; //ok }int main() {book Alice("Alice in Wonderland",29.9);display(Alice);book Harry("Harry potter", 49.9);display(Harry);return 0; }

?

總結(jié)

以上是生活随笔為你收集整理的C++类与const关键字的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。