`
huiminchen
  • 浏览: 75776 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

介绍const、this的几个链接

 
阅读更多
这三篇文章介绍const,说的都挺好
可以放在一起看
http://blog.csdn.net/Eric_Jo/article/details/4138548
http://www.bccn.net/Article/kfyy/cyy/jszl/200607/4166.html
http://blog.csdn.net/clozxy/article/details/5679887

这篇文章介绍this指针
http://www.cnblogs.com/hnrainll/archive/2011/05/20/2051939.html
this指针的含义及其用法:
1. this指针是一个隐含于每一个成员函数中的特殊指针。它指向正在被该成员函数操作的那个对象。
2. 当对一个对象调用成员函数时,编译程序先将对象的地址赋给this指针,然后调用成员函数,每次成员函数存取数据成员时,由隐含使用this指针。
3. 当一个成员函数被调用时,自动向它传递一个隐含的参数,该参数是一个指向这个成员函数所在的对象的指针。
4. 在C++中,this指针被隐含地声明为: X *const this,这意味着不能给this 指针赋值;
   在X类的const成员函数中,this指针的类型为:const X* const, 这说明this指针所指向的这种对象是不可修改的(即不能对这种对象的数据成员进行赋值操作);
5. 由于this并不是一个常规变量,所以,不能取得this的地址。
6. 在以下场景中,经常需要显式引用this指针
   (1) 为实现对象的链式引用(如例1);
   (2) 为避免对同一对象进行赋值操作(如例2);
   (3) 在实现一些数据结构时,如list.
分享到:
评论

相关推荐

    c++总结关于内联、重载、使用const

    当一个成员函数被声明为 `const` 后,它就不能修改任何 `this` 指针指向的对象的状态。 6. **在另一连接文件中引用 const 常量**: ```cpp extern const int i; // 正确 extern const int j = 10; // 错误,...

    点击锚点链接时页面滚动的特效(Javascript Smooth Scroll)

    平滑滚动通常涉及到以下几个关键点: 1. **HTML锚点链接**:首先,我们需要在HTML中设置锚点链接。例如,我们可以为一个ID为"section1"的元素创建一个链接: ```html 前往Section 1 这是Section 1的内容 ``` 2...

    JS生成迅雷下载地址

    要生成迅雷下载地址,我们需要以下几个步骤: 1. **获取文件信息**:首先,你需要知道你想要提供的文件的基本信息,包括文件的网络URL、文件大小、文件类型等。这些信息可以通过服务器API获取,或者在网页上静态...

    [详细完整版]链表数据结构.pdf

    每个节点包含两部分:一部分是存储数据的元素本身,另一部分是一个指向下一个节点的引用(即指针或链接)。 #### 二、链表的分类 链表可以根据其结构特点进一步分为几种不同的类型: 1. **单向链表**: - 特点:...

    新手学习C++入门资料

    volatile const protected this wchar_t const_cast public throw friend true reinterpret_cast try bitor xor_e and_eq compl or_eq not_eq bitand 在C++中还增加了bool型变量和wchar_t型变量: 布尔型...

    DLL动态链接库调用C#源代码

    C#支持几种不同的调用约定,如`StdCall`、`Cdecl`和`ThisCall`。`StdCall`是默认约定,适用于大多数Windows API函数;`Cdecl`则由C和C++使用,函数调用者负责清理堆栈。 3. **数据类型映射**: 在C#和非托管DLL...

    angular 2 router

    测试Angular Router涉及到以下几个方面: - **隔离测试**:测试单一组件或指令的行为。 - **浅层测试**:测试组件及其直接子组件。 - **集成测试**:测试组件与依赖项的整体行为。 #### 十、配置 **Angular ...

    C++中常见错误

    本文将根据提供的示例,详细解释几个常见的C++错误及其解决方案。 #### 1. IntelliSense: #error directive: Please use the /MD switch for _AFXDLL builds. **错误信息:** ``` IntelliSense: #error directive:...

    Linux下字符设备驱动程序的结构

    在理解字符设备驱动程序之前,我们需要明确几个概念: 1. **驱动程序与内核的关系**:驱动程序是与内核紧密相连的底层程序,它通过特定的接口与内核进行通信。这些接口对用户空间的应用程序通常是不可见的。 2. **...

    C#实现简单的壁纸点击切换

    2. **API函数**:在壁纸切换的场景中,关键的API函数有以下几个: - `SystemParametersInfo`:这个函数用于获取或设置系统参数,包括桌面壁纸。其原型为`bool SystemParametersInfo(uint action, uint param, ref ...

    java前端分页实现

    分页通常包括以下几个关键元素: 1. **当前页数**:用户当前查看的是哪一页。 2. **总页数**:根据数据量计算出的总页数。 3. **每页条目数**:每一页显示的数据数量,用户可以选择自定义。 4. **导航元素**:如...

    c++学习笔记.pdf

    8. C++的编译过程一般包括预处理、编译及优化、汇编和链接几个阶段。预处理阶段负责处理源代码中的预处理指令,如宏定义和文件包含。编译及优化阶段负责将预处理后的代码转换成汇编代码,并进行优化。汇编阶段将汇编...

    js连接sqlite代码

    连接SQLite的基本步骤通常包括以下几点: 1. **安装SQLite库**:在Node.js环境中,我们需要首先安装一个能支持JS与SQLite交互的库,如`sqlite3`。这可以通过npm(Node包管理器)完成,命令是: ``` npm install ...

    非常好用的 js树形菜单

    要创建一个JS树形菜单,我们需要以下几个核心组件: 1. 数据结构:定义树形菜单的数据模型,这通常是一个嵌套的对象数组,其中每个对象代表一个节点,包含节点的文本、链接、是否展开等属性。 ```javascript const...

    c++笔试宝典,有了它c++不愁~

    根据提供的文件信息,我们可以从中提炼出以下几个重要的C++知识点: ### 1. 链表反转 链表是一种常见的数据结构,在很多算法题中都会用到。本节介绍了一个简单的链表反转函数。 #### 示例代码解析 ```cpp struct ...

    Linked-List-Data-Structure-Implementation:我学习了如何使用es6类实现链接列表。 好玩的东西!

    创建链表类时,我们需要考虑以下几个核心方法: 1. **构造函数**:初始化链表,通常设置头节点为null。 2. **insertAtBeginning**:在链表的开头插入新节点。 3. **insertAtEnd**:在链表的末尾插入新节点。 4. **...

    本人得到的C++面试题资源

    根据提供的文件信息,我们可以整理出以下几个关键的C++知识点: ### C++ 面试题概览 #### 1. 文件包含(`#include`) 在C++中,`#include`指令用于包含其他源文件或头文件。有两种形式: - `#include <filename.h>...

    strcpy源码的编译和使用

    在C语言中,编译源代码通常涉及以下几个步骤: 1. **预处理(Preprocessing)**:预处理器会处理宏定义、条件编译指令(如 `#if`, `#ifdef` 等)以及包含的头文件。 2. **编译(Compilation)**:编译器将预处理后...

    OMAP3530摄像头驱动分析

    具体而言,摄像头驱动主要包括以下几个部分: 1. **I2C控制**:用于配置摄像头模组的相关参数,如分辨率、帧率等。 2. **数据传输**:通过8位并行接口实现图像数据的高速传输。 3. **图像信号处理(ISP)**:包括自动...

    qtWebview_1.zip

    在本文中,我们将深入探讨如何在Qt环境下使用QAxWidget来显示和交互网页,并通过重写几个关键类来实现JavaScript与Qt之间的双向通信。QAxWidget是Qt库中用于ActiveX控件支持的部分,它允许Qt应用程序嵌入并操作...

Global site tag (gtag.js) - Google Analytics