天天看點

C++ 核心 4.1 類的封裝4 類和對象

4 類和對象

面向對象三大特性:封裝、繼承、多态

萬物皆對象。對象= 屬性+行為

類是抽象的對象。 比如路上有很多(具體的)車,但抽象出來都屬于車。

定義類的文法:

class 類名
{
通路權限:
    屬性;
    行為;
};
           

4.1 封裝

封裝意義:

  • 結合屬性和行為,符合現實。
  • 權限控制

圓類

const double PI 3.1415;
class Circle
{  
public:  //通路權限
    //屬性
    int m_r; //半徑

    //行為
    double cal_circumference()
    {
        return 2 * PI * m_r;
    }
};

//使用類
int main(){
    Circle c1;
    c1.m_r = 10;
    cout << c1.cal_circumference() << endl;
}
           

4.1.1 權限控制

權限控制是封裝的另一個意義。

通路權限有三種

public 公開

protected 保護 (子類可以通路父類的保護内容,具體看後面的繼承)

private 私有 (子類不可以通路父類的私有内容)

隻有公開的成員才能類外通路。

例:

class Person
{
public :
    string m_Name;

protected:
    string m_Car;

private:
    int m_Password;

public:
    void func()
    {
        m_Name = "張三";
        m_Car = "拖拉機";
        m_Password = 123456;
    }
};


int main() {
    Person p;
    p.m_Name = "李四";
    p.m_Car = "五菱"// 錯誤,類外不能通路protected和private成員
} 
           

4.1.2 struct 和 class

struct 成員預設是public

class 成員預設是private

4.1.3 成員屬性設定為私有

class Person
{
public:
    void set_name(string name){
        m_Name = name;
    } 
    void get_name(){
        return m_Name;
    }
private:
    string m_Name;
}
           

繼續閱讀