1.this指针

this指针是一个指向对象的指针。
this指针是一个隐含于成员函数中的对象指针。
this指针是一个指向正在调用成员函数的对象的指针。
类的静态成员函数没有this指针。//一般只访问静态数据成员  也就没有什么对象可言了  如果访问非静态数据成员还要声明 也更加没有用this的必要了
 
2.
(1)常对象
常对象是指对象的数据成员的值在对象被调用时不能被改变。常对象必须进行初始化,且不能被更新。不能通过常对象调用非const型的普通成员函数(常对象只能调用常成员函数),但是普通对象可调用const成员函数。
    const 类名 对象名[(实参列表)]
    类名 const 对象名[(实参列表)]
虽然常对象中的数据成员只能引用,不可以修改。但是如果一定要修改,可将需要修改的数据成员声明为mutable,如:mutable int Width; 这样就可以用声明为const的成员函数来修改它的值了。
 
(2)常数据成员
在类体中将数据成员声明为const型,即为常数据成员。
常数据成员不同于一般的符号常量,它在成员说明时不能被赋值,而是在对象被说明时被赋值。一旦对象被创建,这个值就不允许改变,任何类内外函数只可读它,而不可改变它。
值得注意的是,因为不能对常数据成员赋值,所以对常数据成员的初始化必须要用构造函数的参数初始化列表来完成。
 
如声明Length为常数据成员:const int Length; //声明Length为常数据成员
 
下面代码在构造函数中对Length进行赋值,这种用法是错误的:
Rectangle(int w,int len)
{ Width=w; Length=len; } //错误,常数据成员不能被赋值
正确的写法应该是:
Rectangle(int w,int len):Length(len)
{ Width=w; }
 
3.常成员函数
(1)关键字const是函数的一部分,在函数声明和定义部分都必须包含。
int Area() const; //常成员函数Area( )的声明//const放在最后
int Rectangle::Area() const
//在类体外对常成员函数Area( )的定义
{…}
(2)常成员函数可以引用const或非const型数据成员,但只能引用,不可修改。
(3)常成员函数不能调用另一个非const型成员函数。
 
4.常指针
(1)指向对象的常指针
将指针变量声明为const型,这样指针值就始终保持为其初值,不能改变,即指针指向的内存中存放的数值可以改变,但是指针所指向的地址不可以改变。使用常指针,目的是不允许改变指针变量的值,而使其始终指向原来的对象。
类名 * const 指针变量名=&对象名;
如:Rectangle r1(6,6);
       Rectangle *const pr=&r1;
 
(2)指向常对象的指针变量
 
const 类名 * 指针变量名=&对象名
如:
Rectangle r1(6,6);
const Rectangle *pr=&r1;
定义的指针pr是指向常对象的指针变量。试图通过pr修改对象r1的值的操作都是非法的。但是指针pr可以指向另外一个Rectangle的对象,
 
Rectangle r2(8,8);
pr=&r2;
但是,此时依然不能通过pr修改r2的值。//具体是为什么 到时候再补上吧
 
 

c++复习——类(2)的更多相关文章

  1. C++复习:类和对象

    类和对象 基本概念 1)类.对象.成员变量.成员函数 2)面向对象三大概念 封装.继承.多态 3)编程实践     类的定义和对象的定义,对象的使用     求圆形的面积     定义Teacher类 ...

  2. Swift4.0复习类

    1.类的属性: 2.类的方法: 3.类作为引用类型: “Swift新增了一对操作符 === 与 !== 用于判定同一个类的两个对象引用是否指向同一对象实例.” 摘录来自: “大话Swift 4.0”. ...

  3. c++复习——类(1)

    1.  拷贝构造函数 //并没有搞懂 先存着吧  遇到实际情况再回来看看 拷贝构造函数在以下三种情况被调用: (1)当用一个已经初始化过的对象去初始化同类另一个对象时, 拷贝构造函数被调用. Samp ...

  4. java面向对象复习之一

    目的: 复习如何实现代码的逻辑思路: 复习类的封装: 复习类和对象的创建使用和封装: 练习: 实现功能:人到超市买东西 抽出三个类: 人 超市 东西: 功能点: 买: 它们之间的联系:东西包含于超市 ...

  5. Java类的继承与多态特性-入门笔记

    相信对于继承和多态的概念性我就不在怎么解释啦!不管你是.Net还是Java面向对象编程都是比不缺少一堂课~~Net如此Java亦也有同样的思想成分包含其中. 继承,多态,封装是Java面向对象的3大特 ...

  6. PyQt5(1)——Qt Designer初探

    相关环境配置我们就不介绍了(网上有很多教程) Qt Designer 是一款十分强大的GUI工具,生成的文件为 .UI文件  可以通过命令转化为Py文件,简单来说我们可以通过拖拽方式生成界面,在通过简 ...

  7. 2019全国大学生信息安全竞赛ciscn-writeup(4web)

    web1-JustSoso php伪协议获取源码 ?file=php://filter/read=convert.base64-encode/resource=index.php index.php ...

  8. 20200117 .net 001

    第一部分:面向对象 封装 继承(里氏转换) 多态第二部分:值类型.引用类型.字符串操作第三部分:集合文件操作第四部分:正则表达式第五部分:XML操作第六部分:委托.事件第七部分:反射. 1.变量的命名 ...

  9. .Net 笔记

    1.介绍 .net一般指.Net Framework框架.一种平台,一种技术. C#是一种编程语言,可以开发基于.net平台的应用. .Net Framework是框架是.Net平台不可缺少的一部分, ...

随机推荐

  1. Android——LruCache源码解析

    以下针对 Android API 26 版本的源码进行分析. 在了解LruCache之前,最好对LinkedHashMap有初步的了解,LruCache的实现主要借助LinkedHashMap.Lin ...

  2. 全新一台node节点加入到集群中

    目录 前言 对新节点做解析 方法一 hosts 文件解析 方法二 bind 解析 测试 分发密钥对 推送 CA 证书 flanneld 部署 推送flanneld二进制命令 推送flanneld秘钥 ...

  3. 【五一qbxt】day3 动态规划

    动态规划 引例: 斐波那契数列: 边界条件:f0=0: f1=1: 能够直接被求出值的状态 不需要计算其他斐波那契数列的值直接可以得到结果: 转移方程:fn=fn-1+fn-2如何用已有状态求出未知状 ...

  4. SI 和 MDK 添加Astyle功能

    一. 什么是Astyle 1. Astyle是一个用来对C/C++代码进行格式化的插件,可在多个环境中使用.该插件基于 Artistic Style 开发 二. 软件获取地址 1.下载地址:https ...

  5. POJ 3410 Split convex polygon(凸包)

    题意是逆时针方向给你两个多边形,问你这两个多边形通过旋转和平移能否拼成一个凸包. 首先可以想到的便是枚举边,肯定是有一对长度相同的边贴合,那么我们就可以n2枚举所有边对,接下来就是旋转点对,那么假设多 ...

  6. 小白学Python——Matplotlib 学习(2):pyplot 画图

    matplotlib.pyplot是一组命令样式函数,使matplotlib像MATLAB一样工作.每个pyplot函数都会对图形进行一些更改:例如,创建图形,在图形中创建绘图区域,在绘图区域中绘制一 ...

  7. [零基础学python]啰嗦的除法

    除法啰嗦的,不仅是python. 整数除以整数 看官请在启动idle之后.练习以下的运算: >>> 2/5 0 >>> 2.0/5 0.4 >>> ...

  8. mongodb启动报错,child process failed, exited with error number 1

    error: child process failed, exited with error number 1 第一次安装mongodb,随后启动一般不会出现上面的错误,出现这种错误的原因一般是mon ...

  9. web前后端数据交互

    前后端数据交互是每一名web程序员必须熟悉的过程,前后端的数据交互重点在于前端是如何获取后端返回的数据,毕竟后端一般情况下只需要将数据封装到一个jsonMap,然后return就完了.下面通过一个li ...

  10. Jmeter学习总结

    学习内容: 1.用户定义的变量 作用:多个地方使用同一个值,且该值在不同的环境下不同,方便脚本在不同环境下运行时修改. 2.基本的HTTP请求,请求方式:get 3.传入参数为json 4.HTTP信 ...