对象本质上不过是一种新的数据类型。
类(class)是一个模型(就像是一张蓝图,它决定一个对象将拥有什么样的属性、功能等),且每个类跟变量一样都有一个名字。当我们为这个类创建实例的时候,也就是对象(类的具体化实现)。
类由变量(类里的变量称属性)和函数(类里的函数称方法)组成,对象将使用那些变量来存放信息,调用那些函数来完成操作。同理对象内部有变量和函数,而结构通常只由各种变量构成。
例如std::cout即为使用的是std类中的cout对象;std:string数据类型使用的是std类中的string对象
面相对象编程技术(object-oriented programming)可以说是面向过程技术(procedural programming)的替代品。
面向过程技术关注的是对数据进行处理的过程,面向对象(OOP技术)关注的是对数据进行怎样的处理。
实例1:对象应用造一辆车
1 #include <iostream>
2
3 #define FULL_GAS 85
4
5 class Car//让我们来造辆车,定义类Car ,C++允许在类里面声明常量,但不允许对它进行赋值
6 {
7 public:
8 std::string color;
9 std::string engine;
10 unsigned int gas_tank;//油缸
11 unsigned int wheel;
12
13 void setColor(std::string col);
14 void setEngine(std::string eng);
15 void setWheel(unsigned int whe);
16 void filltank(int liter);//加油
17 int running(void);//动
18 void warning(void);
19 };
20 void Car::setColor(std::string col)
21 {
22 color = col;
23 }
24 void Car::setEngine(std::string eng)
25 {
26 engine = eng;
27 }
28 void Car::setWheel(unsigned int whe)
29 {
30 wheel = whe;
31 }
32 void Car::filltank(int liter)//函数(又称方法)的定义
33 {
34 gas_tank += liter;
35 }
36 int Car::running(void)
37 {
38 std::cout << "我正在以120的时速往前移动。。。\n";
39 gas_tank--;
40 std::cout << "当前还剩 " << 100*gas_tank/FULL_GAS << "%" << "油量!\n";
41
42 return gas_tank;
43 }
44 void Car::warning(void)
45 {
46 std::cout << "WARNING!!" << "\n还剩 " << 100*gas_tank/FULL_GAS << "%" << "油量!\n";
47 }
48
49 int main()
50 {
51 char i;
52 Car mycar, car1;
53
54 mycar.setColor("WHITE");
55 mycar.setEngine("V8");
56 mycar.setWheel(4);
57
58 mycar.gas_tank = FULL_GAS;
59
60 while(mycar.running() )
61 {
62 if(mycar.gas_tank < 10)
63 {
64 mycar.warning();
65 std::cout << "请问是否需要加满油再行驶?(Y/N)\n";
66 std::cin >> i;
67 if( 'Y'== i || 'y' == i)
68 {
69 mycar.filltank(FULL_GAS);
70 }
71 }
72
73 }
74 return 0;
75 }