1:当建立一个对象之后,如果不希望它的任何数据发生改变,可以将其直接声明为const对象,例如:

const 类名 对象名

const对象必须初始化。我们可以调用它的数据和函数,但是不可以对他们进行修改。除此之外,const对象的this指针也还是常量。我们知道,成员函数在自己的函数体内自动为成员变量加上this指针。如何使这些内存指针就转化为const呢?仍然需要const关键字,函数声明形式如下:

返回类型 函数名(参数列表) const;

即在函数头结尾加上const。只能对类中的函数做如此说明,对外部函数无效。

2:代码如下:

(1)box.h

class box{
public:int m_lenth;    //长 int m_width;    //宽int m_hight;    //高box(int lenth,int width,int hight);
bool Compare(box b) const ;//函数声明};

View Code

(2)box.cpp

#include "stdafx.h"
#include <iostream>
#include "box.h"
using std::cout;
using std::endl;
box::box(int lenth,int width,int hight)
{   m_lenth=lenth;m_width=width;m_hight=hight;cout<<"刚刚制作的盒子长:"<<lenth<<"宽:"<<width<<"高:"<<hight<<endl;
}
bool box::Compare(box b) const//此处就和它比,不再改变了。总之,如果某个对象不想改变,而有函数与不改变的对象有关系,那么久这么弄
{   return (m_lenth==b.m_lenth)&(m_width==b.m_width)&(m_hight==b.m_hight);
}

View Code

(3)mian.cpp

// 7.8.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include "box.h"
#include <iostream>
using std::cout;
using std::endl;
using std::cin;
int main()
{const box styleBox(5,2,3);//不希望它发生改变,所以直接声明为const对象cout<<"标准盒子创建完成"<<endl;box temp(1,1,1);while(styleBox.Compare(temp) != true)//注意:此处为styleBox.所以调用的时候,this指针不想改变了
    {cout<<"刚才的盒子不合适"<<endl;int lenth;int width;int hight;cout<<"请输入新盒子的数据,使它符合标准盒子的大小"<<endl;cin>>lenth;cin>>width;cin>>hight;temp = box(lenth,width,hight);}cout<<"盒子刚好合适,恭喜你"<<endl;return 0;
}

View Code

转载于:https://www.cnblogs.com/lovemi93/p/7553393.html

C++入门经典-例7.8-const对象,标准尺寸相关推荐

  1. C++入门经典-例6.23-字符串数组赋值与string

    C++入门经典-例6.23-字符串数组赋值与string 1:代码如下: // 6.23.cpp : 定义控制台应用程序的入口点. //#include "stdafx.h" #i ...

  2. C++入门经典-例2.14-使用移位运算

    C++入门经典-例2.14-使用移位运算 1:代码如下: // 2.14.cpp : 定义控制台应用程序的入口点. //#include "stdafx.h" #include & ...

  3. C++入门经典-例8.3-子类显示调用父类构造函数

    1:当父类含有带参数的构造函数时,创建子类的时候会调用它吗?答案是通过显示方式才可以调用. 无论创建子类对象时调用的是那种子类构造函数,都会自动调用父类默认构造函数.若想使用父类带参数的构造函数,则需 ...

  4. C++入门经典-例8.1-类的继承

    1:继承是面向对象的主要特征(此外还有封装和多态)之一,它使得一个类可以从现有类中派生,而不必重新定义一个新类.继承的实质就是用已有的数据类型创建新的数据类型,并保留已有数据类型的特点,以旧类为基础创 ...

  5. C++入门经典-例6.14-通过指针连接两个字符数组

    1:字符数组是一个一维数组,引用字符数组的指针为字符指针,字符指针就是指向字符型内存空间的指针变量. char *p; char *string="www.mingri.book" ...

  6. C++入门经典-例4.7-变量的作用域

    1:代码如下: // 4.7.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream> using ...

  7. C++入门经典-例9.4-默认模板参数

    1:默认模板参数就是在类模板定义时设置类型形式参数表中的一个类型参数的默认值,该默认值是一个数据类型.有了默认的数据类型参数后,在定义模板的新类型时就可以不进行指定.代码如下: // 9.4.cpp ...

  8. C++入门经典-例4.1-声明、定义和使用函数

    1:代码如下: // 4.1.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream> using ...

  9. C++入门经典-例2.13-左移运算

    1:代码如下: // 2.13.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include<iostream> using ...

最新文章

  1. Spring Boot第五篇:springboot整合 beatlsql
  2. MySQL存储引擎类别
  3. Java中使用Base64进行编码解码的工具类-将验证码图片使用Base64编码并返回给前端
  4. mybatis04--Mapper动态代理实现
  5. WTM系列视频教程:CodeFirst
  6. 服务器内存不认硬盘_服务器品牌有哪些?如何选择服务器?
  7. 如何借助 Python 俘获女孩子芳心?
  8. OpenAI挑战DOTA 2世界冠军OG,这是赌上人类尊严的决战
  9. 使用php-fpm状态页观察当前的php-fpm状态
  10. mysql算法优化原则_Mysql语句优化的原则——让你写sql更加顺手
  11. 遗传算法C语言实现以及思路详解简单易懂
  12. 《Fortran 95 程序设计》阅读笔记一
  13. C# dataGridView控件单元格底色 dataGridView背景色 背景色调整 Header背景色前景色
  14. DirectX是什么
  15. 山东最新高级消防设施操作员考试真题及答案
  16. c语言程序设计入门教程视频教学
  17. 探究 | Elasticsearch如何物理删除给定期限的历史数据?
  18. java反射 enum参数_CookBook/3-Java反射.md at master · Byron4j/CookBook · GitHub
  19. QT报错:Gtk-Message:Failed to load module “gail“
  20. 如何用 putty 连接远程 Linux 系统

热门文章

  1. Android N混合编译与对热补丁影响深度解析
  2. adapt和adopt的区别_脸盲了,adopt和adapt要如何区分?
  3. matlab文件批量导入问题总结
  4. 蚌埠粮食经济技师学院计算机,安徽粮食经济技师学院2020年有哪些专业
  5. python 字符串 f_Python字符串格式化f-string多种功能实现
  6. linux下oracle数据库升级,Oracle数据库在LinuxAS4升级
  7. xshell 安装yum_xshell上安装docker
  8. 拦截导弹(二分匹配)
  9. BZOJ 1859 Luogu P2589 [ZJOI2006]碗的叠放 (计算几何)
  10. 数论与数学专题练习(一)(201802~201805)