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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

【小白学习C++ 教程】十一、C++类中访问修饰符

發布時間:2024/10/8 c/c++ 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【小白学习C++ 教程】十一、C++类中访问修饰符 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

@Author:Runsen

類是面向對象編程。它是一種用戶定義的數據類型,它擁有自己的數據成員和成員函數,可以通過創建該類的實例來訪問和使用它們。

一個對象是一個類的實例。定義類時,不會分配內存,但在實例化(即創建對象)時會分配內存。

類是在 C++ 中使用關鍵字 class 后跟類名定義的。類的主體在大括號內定義,并以分號結尾。

語法:

ClassName ObjectName;

訪問修飾符

類共有三種訪問修飾符:public、private 和 protected。

  • Public:在 public 說明符下聲明的所有類成員將可供所有人使用。聲明為 public 的數據成員和成員函數也可以被其他類和函數訪問。可以從程序中的任何地方使用直接成員訪問運算符 (.) 對該類的對象訪問該類的公共成員。
  • #include<iostream> using namespace std;// class definition class Circle { public:double radius;double compute_area(){return 3.14 * radius * radius;}};// main function int main() {Circle obj;cout << "輸入圓的半徑:" << endl;cin >> obj.radius;cout << "Radius is: " << obj.radius << "\n";cout << "Area is: " << obj.compute_area();return 0; }

    在上面的程序中,數據成員radius被聲明為 public,因此它可以在類外部訪問,因此允許從 main() 內部訪問。

  • private :聲明為私有的類成員只能被類內部的成員函數訪問。它們不允許被類外的任何對象或函數直接訪問。只有成員函數或友元函數才能訪問類的私有數據成員。
  • #include<iostream> using namespace std;class Circle {// private data member private:double radius;// public member function public:double compute_area(){ return 3.14 * radius * radius;} }; // main function int main() {// creating object of the classCircle obj;// trying to access private data member// directly outside the classobj.radius = 1.5;cout << "Area is:" << obj.compute_area();return 0; }

    報錯如下:

    在函數“int main()”中: 11:16:錯誤:'double Circle::radius' 是私有的雙半徑;^ 31:9:錯誤:在此上下文中obj.radius = 1.5;^

    上述程序的輸出是編譯時錯誤,因為我們不允許直接在類外訪問類的私有數據成員。然而嘗試訪問 obj.radius,radius 是一個私有數據成員,我們得到一個編譯錯誤。

    但是,我們可以使用類的公共成員函數間接訪問類的私有數據成員。

    #include<iostream> using namespace std;class Circle { // private data memberprivate:double radius;// public member function public: void compute_area(double r){ // member function can access private// data member radiusradius = r;double area = 3.14*radius*radius;cout << "Radius is: " << radius << endl;cout << "Area is: " << area;}};// main function int main() { Circle obj;obj.compute_area(1.5);return 0; }
  • Protected:Protected 訪問修飾符類似于私有訪問修飾符,除非借助友元類,否則不能在其類之外訪問,不同之處在于聲明為 Protected 的類成員可以被任何人訪問該類的子類(派生類)也是如此。
  • 注意:這種通過繼承的訪問可以根據繼承的模式改變派生類中基類元素的訪問修飾符。

    #include <iostream> using namespace std;// base class class Parent { protected:int id_protected;};class Child : public Parent { public:void setId(int id){id_protected = id;}void displayId(){cout << "id_protected is: " << id_protected << endl;} };// main function int main() {Child obj1;obj1.setId(81);obj1.displayId();return 0; }id_protected 是:81

    成員函數

    定義成員函數有兩種方式:

    • 內部類定義
    • 外部類定義

    要在類定義之外定義成員函數,我們必須使用作用域解析:: 運算符以及類名和函數名。

    #include <iostream> using namespace std; class Geeks {public:string geekname;int id;void printname();void printid(){cout << "Geek id is: " << id;} };void Geeks::printname() {cout << "Geekname is: " << geekname; }int main() {Geeks obj1;obj1.geekname = "Runsen";obj1.id=22;// call printname()obj1.printname();cout << endl;// call printid()obj1.printid();return 0; }

    總結

    以上是生活随笔為你收集整理的【小白学习C++ 教程】十一、C++类中访问修饰符的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。