1、
使用对象进行编程是C++的核心,也是我们常说的C++比C“高级”的重要根据之一。
2、类(Class)就像是一幅蓝图,它决定一个对象将是什么样的(具备什么样的属性和功能)。
3、OOP过程的第一步是创建一个类,而每个类跟变量一样都有一个名字。
class MyFirstClass
{
};
4、类名的第一个字符采用大写是一种习惯上的标准,但不是硬性规定。在类声明末尾,必须有一个分号,这一点跟C++结构情况相同。
造辆车:先定义类的简单属性,然后再给类添加方法(先在类的声明里创建一个方法的原型,稍后再实现这个方法)。
#include <iostream>
class Car
{
public:
std::string color;
std::string engine;
float gas_bank;
unsigned int wheel;
void fillTank(float liter);
int running(void);
};
void Car::fillTank(float liter)
{
gas_bank += liter;
}
int main()
{
Car car1;
car1.fillTank(80);
return 0;
}
1、作用域解析符::的作用是告诉编译器这个方法存在于何处,或者说是属于哪一个类。
2、事实上,std::cout所引用的是std里定义的cout,而std::string数据类型其实也是一个对象。我们一直在使用对象,只是自己还不知道罢了。
3、面向过程技术关注的是对数据进行处理的过程,OOP技术关注的是对数据进行怎样的处理。
4、对象与结构有很多相似之处,但前者还可以有它们自己的函数。记住这点区别对掌握OOP技术的要领很有帮助。
注意点:
1、C++允许在类里声明常量,但不允许对它进行赋值。如下:
class Car
{
public:
const int TANKSIZE = 85; // 不允许!!
};
绕开这一限制的方法就是创建一个静态常量(不建议这么做)。如下:
class Car
{
public:
static const int TANKSIZE = 85; // OK!!
};
2、类似于使用结构的情况,可以在声明某个类的同时立刻创建一些该类的对象。如下:
class Car
{
...
}car1, car2;
这种方法在C++里是允许的,但作为一种良好的编程习惯,应该避免这种做法!
3、假设我们有以下代码:
Car car1, car2;
car1.setColor("WHITE");
...
car2 = car1;
这里把一个对象赋值给另一个同类的对象,将会自动使同名的属性有同样的值。