一、案例需求



使用 C++ 面向对象 , 抽象出一个 立方体 类 ;

立方体 有 长 / 宽 / 高 / 面积 / 体积 私有 成员变量 , 以及 访问 这些成员变量的 公共 成员方法 ;

还提供 立方体 的 对比函数 , 对比 2 个 立方体对象是否相等 ;





二、Visual Studio 创建类



在 Visual Studio 中 , 右键点击 " 解决方案资源管理器 " 中的 解决方案 名称 , 在弹出的菜单中选择 " 添加 / 类©… " 选项 ;

【C++】面向对象编程示例 ( 案例需求 | Visual Studio 创建类 | 类的声明 | 类的实现 | 类的调用 )-LMLPHP

此时会弹出 " 添加类 " 对话框 ,

【C++】面向对象编程示例 ( 案例需求 | Visual Studio 创建类 | 类的声明 | 类的实现 | 类的调用 )-LMLPHP

在 弹出的 " 添加类 " 对话框中 的 类名 输入框中 , 输入 类名 Cube , 会自动生成 .h 头文件名称 Cube.h 和 .cpp 源码文件名称 Cube.cpp ;

点击右下角的 确定 按钮 , 即可完成类的创建 ;

【C++】面向对象编程示例 ( 案例需求 | Visual Studio 创建类 | 类的声明 | 类的实现 | 类的调用 )-LMLPHP

生成的 Cube.h 代码如下 :

#pragma once
class Cube
{
};

生成的 Cube.cpp 代码如下 :

#include "Cube.h"




三、类的声明



在 Cube.h 头文件中 , 编写 类的声明 代码 ;

头文件前面加上 #pragma once , 确保该头文件只被 include 包含 1 次 ;

在 Cube 类中 , 只需要声明 成员变量 和 成员方法 , 其中成员方法不需要实现 , 只进行声明 , 即可完成 类的声明 ;

类的声明 的作用是 , 任何类 包含该 Cube.h 头文件后 , 就可以使用该 Cube 类 ;


类的声明 :

#pragma once
class Cube
{
public:
	// 设置立方体的长度
	void setLength(int length);

	// 设置立方体的宽度
	void setWidth(int width);

	// 设置立方体的高度
	void setHeight(int height);

	// 同时 设置立方体的长度 宽度 高度
	// 同时 设置 默认参数
	void setLengthWidthHeight(int length = 0, int width = 0, int height = 0);

	// 获取立方体的长度
	int getLength();

	// 获取立方体的宽度
	int getWidth();

	// 获取立方体的高度
	int getHeight();
public:
	// 获取立方体的体积
	int getVolum();

	// 获取立方体的面积
	int getArea();

public:
	// 立方体对比
	int isEquals(Cube& cube);
private:
	// 成员变量推荐前面添加 m_ 前缀
	int m_length;	// 立方体 长
	int m_width;	// 立方体 宽
	int m_height;	// 立方体 高
	int m_volume;	// 立方体 体积
	int m_area;		// 立方体 面积
};




四、类的实现



在 Cube.h 头文件中 , 声明了 Cube 类 , 以及类中的 成员函数 和 成员变量 ;

在 Cube.cpp 中最主要的工作就是实现 Cube 类的成员方法 ;

实现成员方法时 , 需要在方法名前加上 Cube:: 域作用符 , 其作用相当于 将该方法 定义在 Cube 作用域中 , 可以访问到 Cube 类中的 私有 成员变量 和 成员方法 ;

实现下面的类的函数声明 :

	// 设置立方体的长度
	void setLength(int length);

在 函数名前面加上 Cube:: 域作用符 ;

// 设置立方体的长度
void Cube::setLength(int length)
{
	m_length = length;
}

类的实现 代码 :

#include "Cube.h"

// 设置立方体的长度
void Cube::setLength(int length)
{
	m_length = length;
}

// 设置立方体的宽度
void Cube::setWidth(int width)
{
	m_width = width;
}

// 设置立方体的高度
void Cube::setHeight(int height)
{
	m_height = height;
}

// 设置立方体的 长度 / 宽度 / 高度
void Cube::setLengthWidthHeight(int length, int width, int height)
{
	m_length = length;  m_width = width; m_height = height;
}

// 获取立方体的长度
int Cube::getLength()
{
	return m_length;
}

// 获取立方体的宽度
int Cube::getWidth()
{
	return m_width;
}

// 获取立方体的高度
int Cube::getHeight()
{
	return m_height;
}

// 获取立方体的体积
int Cube::getVolum()
{
	m_volume = m_length * m_width * m_height;
	return m_volume;
}

// 获取立方体的面积
int Cube::getArea()
{
	m_area = 2 * (m_length * m_width + m_length * m_height + m_width * m_height);
	return m_area;
}

// 立方体对比
int Cube::isEquals(Cube& cube)
{
	if ((m_length == cube.getLength()) &&
		(m_width == cube.getWidth()) &&
		(m_height == cube.getHeight()))
	{
		// 长宽高 全部相等 
		return 1;
	}
	else
	{
		return 0;
	}

	return 0;
}




五、类的调用



在 main 函数代码中 , 导入自定义的类的 头文件 Cube.h ,

// 导入自定义类
#include "Cube.h"

之后 , 可以使用 Cube 类 ;


类的调用 代码示例 :

// 导入标准 io 流头文件 其中定义了 std 命名空间
#include <iostream>
// 导入 std 命名空间
using namespace std;

// 导入自定义类
#include "Cube.h"

int main() {
    // 定义 2 个 Cube 对象
    Cube c1, c2;

    // 初始化 Cube 对象
    c1.setLengthWidthHeight(1, 2, 3);
    c2.setLengthWidthHeight(2, 3, 4);

    cout << "c1 面积 : " << c1.getArea() << " , c1 体积 : " << c1.getVolum() << endl;
    cout << "c2 面积 : " << c2.getArea() << " , c2 体积 : " << c2.getVolum() << endl;

    cout << c1.isEquals(c2) << endl;
    

    // 控制台暂停
    system("pause");

    return 0;
}

执行结果 :

c1 面积 : 22 , c1 体积 : 6
c2 面积 : 52 , c2 体积 : 24
0
请按任意键继续. . .

【C++】面向对象编程示例 ( 案例需求 | Visual Studio 创建类 | 类的声明 | 类的实现 | 类的调用 )-LMLPHP

09-11 12:59