1 / 23
文档名称:

指针引用动态内存分配拷贝构造函数.ppt

格式:ppt   大小:325KB   页数:23页
下载后只包含 1 个 PPT 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

指针引用动态内存分配拷贝构造函数.ppt

上传人:jimilu 2025/2/26 文件大小:325 KB

下载得到文件列表

指针引用动态内存分配拷贝构造函数.ppt

相关文档

文档介绍

文档介绍:该【指针引用动态内存分配拷贝构造函数 】是由【jimilu】上传分享,文档一共【23】页,该文档可以免费在线阅读,需要了解更多关于【指针引用动态内存分配拷贝构造函数 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。内存空间的访问方式
计算机的内存储器被划分为一个个的存储单元。存储单元按一定的规则编号,这个编号就是存储单元的地址。每个字节是一个基本内存单元。
在C++程序中是如何从内存单元中存取数据呢?
1、通过变量名
在变量获得内存空间的同时,变量名成了相应内存空间的名称。
2、通过地址
如果当变量名不够方便或者根本没有变量名可用时,这是就需要直接用地址来访问内存空间。

指针变量的声明
int a=5;
int*pa=&a;
cout<<*pa<<a;
&a
5
pa
a
由上图可以看到,指针变量p指向变量a。在理解“指向”的时候,应该了解它指的是:p中存有a的地址,通过该地址就能找到a。一个变量的指针就是该变量的地址。存放地址的变量,就是指针变量。
指针也是一种数据类型,具有指针类型的变量称为指针变量。指针变量是用于存放内存单元地址的。
通过变量名访问变量是直接的,而通过指针访问一个变量是间接的。
* : 指针运算符,指针所指向的变量的值。
& : 取地址运算符,用来得到所取变量的地址。
对象指针
对象和基本数据类型一样,在初始化后 都会在内存中有一定的空间。既可以通过对象名来访问一个对象也可以通过对象地址。
格式:类名 *对象指针名;
例: //声明Point类的对象指针变量 p_point
Point *p_point;
Point p1;//声明point类的对象p1
//将对象p1地址赋给p_point,使p_point指向p1
p_point=&p1;
使用格式:
对象指针名—>成员名 等同于 (*对象指针名).成员名
例:使用指针来访问Point类的成员
#include<iostream>
using namespace std;
class Point{
public:
Point(int xx,int yy) {
x=xx,y=yy;
}
int getx(){return x;}
int gety(){return y;}
private: int x,y;
};
void main(){
Point a(4,5);
Point *p1;
p1=&a;
cout<<p1->getx()<<endl;
cout<<(*p1).gety()<<endl;
}
引用的概念
2. 引 用
引用是给变量取一个别名,它引入了变量的一个同意词。
格式: type & 含义是“type类型的引用”
此引用与type类型变量的地址相联系。
如:int i;int &j=i;创建一个整型引用j, j是i的地址的别名。
j和i的地址相同,表示同一个变量。
int i=5;
int &j=i;
i=i+1;//i,j都为6
注意:
在声明引用时,马上就要对它进行初始化,不能在声明完后重赋值。 故 int i; int &j; j=i; 是错误
引用运算符只在声明时使用,任何其他“&”的使用都是地址操作符。
5
i
6
i, j
5
i, j
#include<iostream>
using namespace std;
void main(){
int i; int &j=i;
i=5;
i++;
cout<<&i<<" "<<&j<<endl;
cout<<i<<" "<<j<<endl;
}
0x0012FF7C 0x0012FF7C
6 6
#include<iostream>
using namespace std;
class Point{
private: int x,y;
public:
Point(int vx,int vy){x=vx;y=vy;}
void print(){cout<<"x="<<x<<" y="<<y<<endl;}
};
对类对象定义引用与指针举例
void main(){
Point p1(10,10);
Point &pref=p1; //引用
cout<<"p1 addr:"<<&p1 <<" pref addr:"<<&pref<<endl;
(); ();
Point p2(20,20),*pt;
pt=&p2; //指针
cout<<"p2 addr:"<<&p2 <<" pt addr:"<<pt<<endl;
(); pt->print();
}
p1 addr:0x0012FF78 pref addr:0x0012FF78
x=10 y=10
x=10 y=10
p2 addr:0x0012FF6C pt addr:0x0012FF6C
x=20 y=20
x=20 y=20
#include<iostream>
using namespace std;
class A{
private: int x;
public:
A(int vx){
cout<<"Constructor called! "<<vx<<endl;
x=vx;
}
~A(){cout<<"Deconstructor called! "<<x<<endl;}
void print(){cout<<"x="<<x<<endl;}
};
类的引用作为传递的参数
void f1(A &voo){
cout<<"&voo="<<&voo<<endl;
();
}
void main() {
A obj(10);
();
cout<<"&obj="<<&obj<<endl;
f1(obj);
}
Constructor called! 10
x=10
&obj=0x0012FF70
&voo=0x0012FF70
x=10
Deconstructor called! 10