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。


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