C++物件導向編程入門:類(class)

來源:互聯網
上載者:User

上兩篇內容我們著重說了結構體相關知識的操作。

以後的內容我們將逐步完全以c++作為主體了,這也意味著我們的教程正式進入物件導向的編程了。

前面的教程我已經再三說明,結構體的掌握非常重要,重要在哪裡呢?重要在結構體和類有相同的特性,但又有很大的區別,類是構成物件導向編程的基礎,但它是和結構體有著極其密切的關係。

我們在c語言中建立一個結構體我們使用如下方法:

struct test
{
private:
int number;
public:
float socre;
};

類的建立方式和結構體幾乎一樣,看如下的代碼:

class test
{
private:
int number;
public:
float socre;
public:
int rp()
{
return number;
}
void setnum(int a)
{
number=a;
}
};

但是大家注意到沒有,標準c中是不允許在結構體中聲明函數的,但c++中的類可以,這一點就和c有了本質的區別,很好的體現了c++物件導向的特點!

過去的c語言是一種非物件導向的語言

他的特性是:

程式=演算法+資料結構

但c++的特性是

對象=演算法+資料結構

程式=對象+對象+對象+對象+........

所以根據這一特性,我們在定義一個自己定義的結構體變數的時候。這個變數就應該是叫做對象或者叫執行個體。

例如

test a;

那麼a就是test結構的一個對象(執行個體)

test結構體內的成員可以叫做是分量,例如:

a.socre=10.1f;

那麼number就是test結構的對象a的分量(或者叫資料成員,或者叫屬性)score;

在c語言中結構體中的各成員他們的預設儲存控制是public 而 c++中類的預設儲存控制是private,所以在類中的成員如果需要外部掉用一定要加上關鍵字public聲明成公有類型,這一特性同樣使用於類中的成員函數,函數的操作方式和普通函數差別並不大。

例如上面的例子中的rp()成員函數,我們如果有如下定義:

test a;

的話,調用rp()就應該寫成:

a.rp();

成員函數的調用和普通成員變數的調用方式一致都採用.的操作符。

這一小節為了鞏固聯絡我給出一個完整的例子。

如下(重要和特殊的地方都有詳細的註解):

#include <iostream>
using namespace std;
class test
{
private://私人成員類外不能夠直接存取
int number;
public://共有成員類外能夠直接存取
float socre;
public:
int rp()
{
return number;
}
void setnum(int a)
{
number=a;
}
};
void main()
{
test a;
//a.number=10;//錯誤的,私人成員不能外部存取
a.socre=99.9f;
cout<<a.socre<<endl;//公有成員可以外部存取
a.setnum(100);//通過公有成員函數setnum()間接對私人成員number進行賦值操作
cout<<a.rp();//間接返回私人成員number的值
cin.get();
}

好了,介紹了在類內部定義成員函數(方法)的方法,下面我們要介紹一下域區分符(::)的作用了。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.