C++语言笔记系列之五——引用(&)和this指针详解
来源:互联网 发布:淘宝评价了怎么看不到 编辑:程序博客网 时间:2024/05/22 07:03
1.this指针
(1)this指针是一个类所隐含的指针,一个类(注意不是对象)只有一个this指针,this指针是该类的所有对象所共享的。
(2)当通过一个对象访问该对象的成员时,默认this指针指向该对象。
例如:
class Location
{
public:
int x;
int y;
void Init(int a, int b);
};
void Location::Init(int a, int b)
{
x = a; //对象调用时,等同于this->a
y = b;
}
2.引用
(1)定义:引用是对一个存储单元进行别名命名,也就是对一个变量起别名。
(2)符号:&
(3)表示:
数据类型 & 引用名 = 变量名;
要引用的变量单元必须事先存在;引用名和变量名共享同一个单元,对引用的操作实际上就是对变量的操作;引用只是一个名称,本身并不占据存储单元。
3.特别注意
引用的同时必须进行初始化(包括引用本身的初始化和被引用变量的初始化)
int num = 500;
int &ref = num;
错误的两种操作类型:
int &ref;//错误
int num;
int &ref = num;//错误
4.引用带来的变化
int main()
{
int x = 3, y = 5;
exchange(x, y);
cout<<"x = "<<x<<", y = "<<y<<endl;
}
void exchange(int &xn, int &yn)
{
int tem;
tem = xn;
xn = yn;
yn = tem;
}
分析:这个调用是可以互换x和y的值的。在函数调用的过程中,隐形的包含着这样一个过程:
int &xn = x
int &yn = y
然而在exchange函数中对引用的操作,即是对x和y实际存储单元的操作。
5.引用与常量
const int num = 500;
int &ref = num;
cout<<ref;//500
ref = ref + 50;
cout<<ref;//550
cout<<num;//500
分析:当引用的常量单元要进行赋值时,系统将生成一个临时的变量单元,将所引用的常量单元的值放入该单元中,然后再进行操作。
当引用的是变量单元时,赋值则是直接对该变量单元的操作。
6.指针的引用
int b = 6;
int *a = &b;
int *&refp = a;//定义了一个指针引用refp引用指针变量a。
7.引用需要注意的几点问题
引用不是变量,不分配单元。
不可以定义引用的引用。
不可以建立数组的引用,引用只可以引用一个变量值(一个对象也算做一个变量)。
7.填空使下面程序的输出结果为10.
#include <iostream.h>
class Myclass
{
public:
Myclass(int x)
{
_____________
}
int Getnum()
{
return x;
}
private:
int x;
};
int main()
{
Myclass my(10);
cout<<my.Getnum()<<endl;
}
解答:此处应该填的是this->x = x;。
8.全局对象
定义:在函数体外定义的对象。
作用域:从定义点开始,到程序运行结束。
9.全局对象的几点说明
(1)全局对象在编译阶段系统即为其分配存储单元,即在main函
数运行之前调用全局对象的构造函数。
(2)在整个程序运行结束时调用全局对象的析构函数。
注:若有多个全局对象,先构造的后析构。
10.new运算符动态的创建对象
指针变量 = new 类名;//动态创建一个对象单元,但无初始化值
指针变量 = new 类名(初始化值);//动态创建并给定初始化值
11.动态对象的释放
delete 指针变量;
delete的使用
(1)delete必须使用new运算符分配出来的对象。
(2)适用于空指针。
(3)执行delete操作时,调用对象的析构函数。
- C++语言笔记系列之五——引用(&)和this指针详解
- C语言笔记系列之九——指针
- C语言学习笔记(五)——指针【C语言的灵魂】
- C语言学习笔记(五)指针
- C语言笔记系列之五——条件判断语句
- 【C++】基础知识—引用和指针引用
- C++primer学习笔记——引用和指针
- 《C和指针》学习笔记(五)
- C语言笔记系列(五)--字符输入输出和字符函数
- C 语言中的好基友 数组和指针之五
- C/C++中关于地址、指针和引用变量的学习笔记(五) : 指针
- C++Primer 学习笔记之指针和引用
- c语言学习笔记之函数指针和指针函数
- C/C++——引用和指针
- C语言——数组指针和通过指针引用数组元素的方法总结
- Crack C语言之-指针之五
- C语言之指针,数组,引用
- C语言之指针,数组,引用
- 配置android开发环境
- SMP3.0学习笔记之十八 实现GCM的消息推送
- ios 面试题
- CSS入门四
- SMP3.0学习笔记之十九 使用REST API在任何操作系统上消费SMP的OData服务
- C++语言笔记系列之五——引用(&)和this指针详解
- 如何双击就以管理员身份运行批处理
- TP 数据库还原
- PF使用率
- 分享网上找到的一个中国象棋源码
- 手把手教你使用jni双向调用
- 用Python实现URL Encoding和Decoding
- Android,六款安卓车机大PK
- Tomcat布署WEB应用两种方式的区别