- 对象的本质是一种新的数据类型。
- 类是一个模型,对象是类的一个具体化实例。为类创建实例也就是创建对象。
一、类(class)
- 类决定一个对象将是什么样的(有什么属性、功能)。
- 类和变量一样,有名字。
1.创建类
class MyFirstClass //类用关键字class声明
{
}; //注意有分号
2.注意事项:
- 类和结构的区别:对象的内部可以有变量和函数,而结构通常只由各种变量构成。
- 类名:类名的第一个字母采用大写是一种习惯的上的标准,但不是硬性规定。
- 还有在类声明末尾,必须有一个分号,这一点跟 C++ 结构情况相同。
类由变量和函数组成。类里边的变量成为属性,对象将使用那些变量来存储
信息;类里边的函数成为方法,调用那些函数来完成操作。
3.案例,创建车类
#include<iostream>
class Car
{
public:
//属性的声明:
std::string color; //颜色
std::string engine; //引擎
float gas_tank; //油量
unsigned int Wheel; //轮子个数
//方法的声明:
void fiill_tank(float liter);//加油,参数是公升
void runing(void);//跑起来
};
//方法的实现:
void Car ::fiill_tank(float liter) //::作用域解析符 。这里的意思是:fiill_tank这个函数是属于Car类里边的
{
gas_tank+=liter;
}
int main()
{
return 0;
}
作用域解析操作符( :: )作用:告诉编译器这个方法存在于何处,或者说是属于哪一类。
- 其实我们对这个不应该感到陌生,从一个开始我们就不提倡 using namespace std; 这样偷懒的做法,所以我们是 std::cout 。。。
- 事实上 std::cout 所引用的是 std 里定义的 cout,而 std::string 数据类型其实也是一个对象。我们一直在使用对象,只是自己还不知道罢了。
4. 类中声明常量
C++ 允许在类里声明常量,但不允许对它进行赋值
class Car
{
public:
const float TANKSIZE = 85; // 出错 @_@
};
绕开这一限制的方法就是创建一个静态常量
class Car
{
public:
static const float FULL_GAS = 85;
}
5.声明类的同时创建类的对象
类似于使用结构的情况,可以在声明某个类的同时立刻创建一些该类的对象:(C++中允许但不提倡这样做)
class Car
{
......
} car1, car2;
二、对象
1.创建对象
Car car;//创建一个Car对象car
2.访问成员
通过对象可以访问其公共成员变量和成员函数:对象.属性
car.color="red";
3.对象赋值给另一个对象
把一个对象赋值给另一个同类的对象,将会自动使同名的属性有同样的值。
Car car1, car2;
car1.setColor(“WHITE”);
......
car2 = car1;
三、完整代码
#include<iostream>
class Car
{
public:
//属性的声明:
std::string color; //颜色
std::string engine; //引擎
float gas_tank; //油量
unsigned int Wheel; //轮子个数
//方法的声明:
void fiill_tank(float liter);//加油,参数是公升
void runing(void);//跑起来
};
//方法的实现:
void Car ::fiill_tank(float liter) //::作用域解析符 。这里的意思是:fiill_tank这个函数是属于Car类里边的
{
gas_tank+=liter;
}
void Car::runing()
{
std::cout<<"跑起来了,真酷!"<<"\n";
}
int main()
{
Car car;//创建一个Car对象car
car.color="red";
car.gas_tank=66.6;
car.fiill_tank(6.6);
car.runing();
std::cout<<"车的颜色:"<<car.color<<"\n";
std::cout<<"车的油量:"<<car.gas_tank<<"\n";
return 0;
}
未完待续。。。