经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » C++ » 查看文章
C++ 类 & 对象
来源:cnblogs  作者:share0956  时间:2023/6/7 11:02:33  对本文有异议

一、C++ 类 & 对象

C++ 类定义
  1. 定义一个类需要使用关键字 class,然后指定类的名称,并类的主体是包含在一对花括号中,主体包含类的成员变量和成员函数。
  2. 定义一个类,本质上是定义一个数据类型的蓝图,它定义了类的对象包括了什么,以及可以在这个对象上执行哪些操作。
  3. 关键字 public 确定了类成员的访问属性。在类对象作用域内,公共成员在类的外部是可访问的。您也可以指定类的成员为 private 或 protected,这个我们稍后会进行讲解。

定义 C++ 对象

  1. Box Box1; // 声明 Box1,类型为 Box
  2. Box Box2; // 声明 Box2,类型为 Box

访问数据成员

类的对象的公共数据成员可以使用直接成员访问运算符.来访问

  1. Box Box1; // 声明 Box1,类型为 Box
  2. Box Box2; // 声明 Box2,类型为 Box
  3. Box Box3; // 声明 Box3,类型为 Box
  4. double volume = 0.0; // 用于存储体积
  5. // box 1 详述
  6. Box1.height = 5.0;
  7. Box1.length = 6.0;
  8. Box1.breadth = 7.0;
  9. // box 2 详述
  10. Box2.height = 10.0;
  11. Box2.length = 12.0;
  12. Box2.breadth = 13.0;

需要注意的是,私有的成员和受保护的成员不能使用直接成员访问运算符 (.) 来直接访问。我们将在后续的教程中学习如何访问私有成员和受保护的成员

二、类 & 对象详解

1、C++ 类成员函数

2、类访问修饰符

非常重要

  1. #include <iostream>
  2. using namespace std;
  3. class Box
  4. {
  5. public:
  6. double length;
  7. void setWidth( double wid );
  8. double getWidth( void );
  9. private:
  10. double width;
  11. };
  12. // 成员函数定义
  13. double Box::getWidth(void)
  14. {
  15. return width ;
  16. }
  17. void Box::setWidth( double wid )
  18. {
  19. width = wid;
  20. }
  21. // 程序的主函数
  22. int main( )
  23. {
  24. Box box;
  25. // 不使用成员函数设置长度
  26. box.length = 10.0; // OK: 因为 length 是公有的
  27. cout << "Length of box : " << box.length <<endl;
  28. // 不使用成员函数设置宽度
  29. // box.width = 10.0; // Error: 因为 width 是私有的
  30. box.setWidth(10.0); // 使用成员函数设置宽度
  31. cout << "Width of box : " << box.getWidth() <<endl;
  32. return 0;
  33. }

3、 C++ 类构造函数 & 析构函数

3.1、 类的构造函数

  • 类的构造函数是类的一种特殊的成员函数,它会在每次创建类的新对象时执行。
  • 构造函数的名称与类的名称是完全相同的,并且不会返回任何类型,也不会返回 void。构造函数可用于为某些成员变量设置初始值

3.2、 带参数的构造函数

  1. #include <iostream>
  2. using namespace std;
  3. class Line
  4. {
  5. public:
  6. void setLength( double len );
  7. double getLength( void );
  8. Line(double len); // 这是构造函数
  9. private:
  10. double length;
  11. };
  12. // 成员函数定义,包括构造函数
  13. Line::Line( double len)
  14. {
  15. cout << "Object is being created, length = " << len << endl;
  16. length = len;
  17. }
  18. void Line::setLength( double len )
  19. {
  20. length = len;
  21. }
  22. double Line::getLength( void )
  23. {
  24. return length;
  25. }
  26. // 程序的主函数
  27. int main( )
  28. {
  29. Line line(10.0);
  30. // 获取默认设置的长度
  31. cout << "Length of line : " << line.getLength() <<endl;
  32. // 再次设置长度
  33. line.setLength(6.0);
  34. cout << "Length of line : " << line.getLength() <<endl;
  35. return 0;
  36. }

3.3、 使用初始化列表来初始化字段

使用初始化列表来初始化字段:

  1. Line::Line( double len): length(len)
  2. {
  3. cout << "Object is being created, length = " << len << endl;
  4. }

上面的语法等同于如下语法:

  1. Line::Line( double len)
  2. {
  3. length = len;
  4. cout << "Object is being created, length = " << len << endl;
  5. }

假设有一个类 C,具有多个字段 X、Y、Z 等需要进行初始化,同理地,您可以使用上面的语法,只需要在不同的字段使用逗号进行分隔,如下所示:

  1. C::C( double a, double b, double c): X(a), Y(b), Z(c)
  2. {
  3. ....
  4. }

3.4、 类的析构函数

  • 类的析构函数是类的一种特殊的成员函数,它会在每次删除所创建的对象时执行。
  • 析构函数的名称与类的名称是完全相同的,只是在前面加了个波浪号(~)作为前缀,它不会返回任何值,也不能带有任何参数。析构函数有助于在跳出程序(比如关闭文件、释放内存等)前释放资源。
  • 下面的实例有助于更好地理解析构函数的概念:
  1. #include <iostream>
  2. using namespace std;
  3. class Line
  4. {
  5. public:
  6. void setLength( double len );
  7. double getLength( void );
  8. Line(); // 这是构造函数声明
  9. ~Line(); // 这是析构函数声明
  10. private:
  11. double length;
  12. };
  13. // 成员函数定义,包括构造函数
  14. Line::Line(void)
  15. {
  16. cout << "Object is being created" << endl;
  17. }
  18. Line::~Line(void)
  19. {
  20. cout << "Object is being deleted" << endl;
  21. }
  22. void Line::setLength( double len )
  23. {
  24. length = len;
  25. }
  26. double Line::getLength( void )
  27. {
  28. return length;
  29. }
  30. // 程序的主函数
  31. int main( )
  32. {
  33. Line line;
  34. // 设置长度
  35. line.setLength(6.0);
  36. cout << "Length of line : " << line.getLength() <<endl;
  37. return 0;
  38. }

当上面的代码被编译和执行时,它会产生下列结果:

  1. Object is being created
  2. Length of line : 6
  3. Object is being deleted

原文链接:https://www.cnblogs.com/share0956/p/17462315.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号