C++學習(三)

C++中的類與面向對象

    c++與java類似,也有面向對象的概念,不過語法上個人認爲還是有許多差異的。

類的定義

class Box
{
   public:
      double length;   // 盒子的長度
      double breadth;  // 盒子的寬度
      double height;   // 盒子的高度
};

上面的例子我們可以看出來c++與java的差異,比如類定義的末尾要跟一個分號,還有就是成員變量需要聲明在像public這樣的訪問修飾符的後面,然後就是訪問修飾符後面要跟一個冒號等等。

疑問:

    我在這裏有個小疑問,就是關於類的使用,在Java裏面當然是先new對象然後再調用類裏面的成員變量等等,但是c++裏面好像不需要new,直接聲明就能訪問到成員變量了:

#include <iostream>
 
using namespace std;
 
class Box
{
   public:
      double length;   // 長度
      double breadth;  // 寬度
      double height;   // 高度
};
 
int main( )
{
   Box Box1;        // 聲明 Box1,類型爲 Box
   Box Box2;        // 聲明 Box2,類型爲 Box
   double volume = 0.0;     // 用於存儲體積
 
   // box 1 詳述
   Box1.height = 5.0; 
   Box1.length = 6.0; 
   Box1.breadth = 7.0;
 
   // box 2 詳述
   Box2.height = 10.0;
   Box2.length = 12.0;
   Box2.breadth = 13.0;
 
   // box 1 的體積
   volume = Box1.height * Box1.length * Box1.breadth;
   cout << "Box1 的體積:" << volume <<endl;
 
   // box 2 的體積
   volume = Box2.height * Box2.length * Box2.breadth;
   cout << "Box2 的體積:" << volume <<endl;
   return 0;
}

上面的例子我們能看到c++裏面使用對象的時候好像不需要new,就能訪問到成員變量,但是我在Android源碼裏面看到過new的情況,這個等小弟再研究一波,先不糾結。


成員函數

    成員函數的定義有兩種形式,直接看實例:

class Box
{
   public:
      double length;      // 長度
      double breadth;     // 寬度
      double height;      // 高度
   
      double getVolume(void)
      {
         return length * breadth * height;
      }
};

這是第一種,這種基本跟java語法就是一樣的了,不多說,來看第二種

#include <iostream>
 
using namespace std;
 
class Box
{
   public:
      double length;         // 長度
      double breadth;        // 寬度
      double height;         // 高度
 
      // 成員函數聲明
      double getVolume(void);
};
 
// 成員函數定義
double Box::getVolume(void)
{
    return length * breadth * height;
}
這種就能體現差異了,我們可以看到,在類裏面只是聲明瞭函數,而函數實現是在類的外部,還用到了一個符號 :: --作用域限定符,在類體外實現函數定義的時候,必須加上類名並且加上作用域限定符。android源碼裏面用的比較多的就是第二種,而且會把類的定義放在h文件中,而函數實現放到cpp文件中。


類訪問修飾符

    c++中類的訪問修飾符有三種:public、private、protected,作用與java基本一樣,注意c++中如果成員變量前面未聲明訪問修飾符,則默認是private。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章