对象

  • 使用对象进行编程是C++的核心,也是我们常说的C++比C“高级”的重要根据之一。
    对象的本质上不过是一种新的数据类型,只不过它拥有无限的潜力。
  • 我们从一个类开始,首先类是一个模型。当我们为这个类创建实例的时候,也就是对象本身。
  • 这跟我们之前讲解的定义和使用结构的过程很相似,但是这更有扩展性和前瞻性。
    对于初学者而言,我们先给大家一个区别:对象的内部可以有变量和函数,而结构通常只由各种变量构成。

创建简单的类

  • 因此,我们首先需要知道的一件事情是如何编写一个简单对象的模型 – 类

  • 类(Class)就像是一副蓝图,它决定一个对象将是什么样的(具备什么样的属性、功能)。

  • 所以OOP过程的第一步是创建一个类,而每个类跟变量一样都有一个名字,我们就从如何声明一个类说起: class MyFirstClass {
    };

  • 注意,类名的第一个字母采用大写是一种习惯的上的标准,但不是硬性规定。还有在类声明末尾,必须有一个分号,这一点跟C++结构情况相同。

  • 类由变量和函数组成,对象将使用那些变量来存储信息,调用那些函数来完成操作。
    所以人们常常会看到一些专门术语:类里边的变量成为属性,函数成为方法。注意,他们的本质没有改变。

实例

class Car
 { 
   public:
        std::string color;
        std::string engine;
        float gas_tank;
        unsigned int Wheel;
 } 
      

上面我们声明了一辆车的简单属性,现在我们应该让他能跑起来吧? 那么我们应该为类定义一些方法,其实也就是定义一些函数罢了。创建个人函数也是两个步骤的过程:先创建函数的原型(声明),再描述该函数本身实现过程。

  • 给类添加方法如出一辙: 先在类的声明里创建一个方法的原型, 稍后再实现这个方法
class Car
 { 
public:std::string color;
std::string engine;
float gas_tank;
unsigned int Wheel;
void fill_tank( float liter );// 方法的声明:方法是”加油”,参数是”公升”
} 
  • 现在我们的 Car类有了一个名为fillTank的方法,它只有一个输入参数,不需要任何返回值。
    但是我们只有他的原型(声明),想要使用它,我们还需要对这个函数进行正式的定义(即告诉系统如何去实现它)。

方法的定义通常安排在类声明的后面:
void Car::fillTank(float liter) {gas_tank += liter;}
我们发觉作用域解析操作符(::),作用是告诉编译器这个方法存在于何处,或者说是属于哪一个类。
(事实上std::cout所引用的是std里定义的cout,而std::string数据类型其实也是一个对象。我们一直在使用对象,只是自己还不知道罢了。)

  • 面向对象编程技术(object-oriented programming)可以说是面向过程技术(procedural
    programming)的替代品。 面向过程技术关注的是对数据进行处理的过程,OOP技术关注的是对数据进行怎样的处理。
  • 对象与结构有很多相似之处,但前者还可以有它们自己的函数。记住这点区别对掌握OOP技术的要领很有帮助。
    有些程序员喜欢把类的声明和类的函数的定义分别存入两个不同的文件,前者存入.h头文件,后者存入相应的.cpp文件。

注意

C++允许在类里声明常量,但不允许对它进行赋值
class Car
{
public:
const float TANKSIZE = 85; // 出错
}
绕开这一限制的方法就是创建一个静态常量
class Car
{
public:
static const float FULL_GAS = 85;
}

类似于使用结构的情况,可以在声明某个类的同时立刻创建一些该类的对象:
class Car
{
。。。。。。
} car1, car2;
这种做法在C++里是允许的。但作为一种良好的编程习惯,应该避免这种做法!

  • 假设我们有以下代码: Car car1, car2; car1.setColor(“WHITE”); car2 = car1;
    把一个对象赋值给另一个同类的对象将会自动使同名的属性有同样的值。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值