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. .net core 学习小结之 JWT 认证授权

    新增配置文件 { "Logging": { "IncludeScopes": false, "Debug": { "LogLeve ...

  2. linux--vm安装

    网络排错图解 https://www.linuxidc.com/Linux/2017-03/141863.htm net模式 https://www.linuxidc.com/Linux/2017-0 ...

  3. get与post请求的区别 (面试会问)

    get和post请求是HTTP与服务器交互方式,也就是通常所说的风别对服务器资源的增删改查 1. post是修改数据   get是获得数据 GET在浏览器回退时是无害的,而POST会再次提交请求.(面 ...

  4. 好用的 Puppeteer 辅助工具 Puppeteer Recorder

    Puppeteer Puppeteer 是一个Node库,它提供了一个高级API来控制DevTools协议上的Chrome或Chromium,常用于爬虫.自动化测试等,你在浏览器手动完成的大多数事情都 ...

  5. Python list和tuple的相互转换?

    list转为tuple: temp_list = [1,2,3,4,5] 将temp_list进行强制转换:tuple(temp_list) 查看是否转换成功:print type(temp_list ...

  6. 生成EXCEL文件是经常需要用到的功能,我们利用一些开源库可以很容易实现这个功能。

    方法一:利用excellibrary,http://code.google.com/p/excellibrary/ excellibrary是国人写的开源组件,很容易使用,可惜貌似还不支持.xlsx( ...

  7. MySQL使用explain时各字段解释

    1.id select查询的序列号,包含一组数字,表示查询中执行select子句或操作表的顺序 三种情况: (1)id相同,执行顺序由上至下 id相同,执行顺序由上至下 此例中 先执行where 后的 ...

  8. 使用Tensorflow搭建回归预测模型之一:环境安装

    方法1:快速包安装 一.安装Anaconda 1.官网地址:https://www.anaconda.com/distribution/,选择其中一个版本下载即可,最好安装3.7版本,因为2.7版本2 ...

  9. vue + nginx部署404

    记录: vue项目打包放到服务器,使用nginx反向代理的时候路由页面刷新报404,因为刷新时,不存在路径对应的文件或文件夹,需要在nginx配置中添加代码: index index.html; tr ...

  10. PAT Advanced 1011 World Cup Betting (20 分)

    With the 2010 FIFA World Cup running, football fans the world over were becoming increasingly excite ...