C++学习笔记(一)
来源:互联网 发布:算法经典书籍推荐 编辑:程序博客网 时间:2024/05/22 10:44
1.引用数据类型
C++提供了一种与指针密切相关的数据类型-------引用。引用是一个变量的别名,其本质就是计算机不会为一个引用类型变量分配内存空间,而只是使引用类型的变量与与之关联的变量指向同一内存空间,也鉴于此引用在定义的时候必须初始化。也可以理解为引用就是一个指向该变量的指针,与一般指针不同的是引用一旦初始化其指向的地址就不会再变了;
看一下程序:
#include <iostream.h>
void main(void)...{
int a=5;
int &ra=a;
cout<<"a="<<a<<endl;
cout<<"ra="<<ra<<" ";
cout<<"a的地址是"<<&a<<endl;
cout<<"ra的地址是"<<&ra<<endl;
int b=8;
ra=b;
cout<<"a="<<a<<endl;
cout<<"b="<<b<<endl;
cout<<"ra="<<ra<<" ";
cout<<"a的地址是"<<&a<<endl;
cout<<"b的地址是"<<&b<<endl;
cout<<"ra的地址是"<<&ra<<endl;
}
void main(void)...{
int a=5;
int &ra=a;
cout<<"a="<<a<<endl;
cout<<"ra="<<ra<<" ";
cout<<"a的地址是"<<&a<<endl;
cout<<"ra的地址是"<<&ra<<endl;
int b=8;
ra=b;
cout<<"a="<<a<<endl;
cout<<"b="<<b<<endl;
cout<<"ra="<<ra<<" ";
cout<<"a的地址是"<<&a<<endl;
cout<<"b的地址是"<<&b<<endl;
cout<<"ra的地址是"<<&ra<<endl;
}
程序输出结果
a=5
ra=5
a的地址是0x0012FF7C
ra的地址是0x0012FF7C
a=8
b=8
ra=8
a的地址是0x0012FF7C
b的地址是0x0012FF74
ra的地址是0x0012FF7C
由此看出对引用的改变也直接影响的变量的改变,而引用的地址始终是不变的,总是与之关联的变量的地址。
2.拷贝构造函数
拷贝构造函数是一种特殊的构造函数,它的功能是用已有的类对象来初始化一个同类的对象,其形式如下:
<类名>::<拷贝构造函数名>(const <类名>&<引用名>)
看一下程序
#include <iostream.h>
class CDate...{
public:
CDate(int year=2007,int month=6,int day=21)...{
cout<<"调用构造函数"<<endl;
nYear=year;nMonth=month;nDay=day;
cout<<nYear<<"-"<<nMonth<<"-"<<nDay<<endl;
}
CDate(const CDate &ymd)...{
cout<<"调用拷贝构造函数"<<endl;
cout<<ymd.nYear<<"-"<<ymd.nMonth<<"-"<<ymd.nDay<<endl;
}
private:
int nYear,nMonth,nDay;
};
void main()...{
CDate day1;
CDate day2(day1);
}
class CDate...{
public:
CDate(int year=2007,int month=6,int day=21)...{
cout<<"调用构造函数"<<endl;
nYear=year;nMonth=month;nDay=day;
cout<<nYear<<"-"<<nMonth<<"-"<<nDay<<endl;
}
CDate(const CDate &ymd)...{
cout<<"调用拷贝构造函数"<<endl;
cout<<ymd.nYear<<"-"<<ymd.nMonth<<"-"<<ymd.nDay<<endl;
}
private:
int nYear,nMonth,nDay;
};
void main()...{
CDate day1;
CDate day2(day1);
}
程序输出结果:
调用构造函数
2007-6-21
调用拷贝构造函数
2007-6-21
- c 学习笔记 (一)
- C学习笔记(一)
- C ++ 学习笔记(一)
- C学习笔记(一)
- C++&C学习笔记(一)(基础)
- c学习笔记(一)
- 【C++】学习笔记一
- Pro *C/C++学习笔记(一)
- C语言学习笔记(一)
- C语言学习笔记(一)
- C++primer学习笔记(一)
- C++Primer学习笔记(一)
- Object-C学习笔记(一)
- C语言学习笔记(一)
- C和指针 学习笔记(一)
- C语言学习笔记(一)
- c++Templates学习笔记(一)
- Pro *C/C++学习笔记(一)
- 企业信息化咨询的钱哪去了[转]
- Steven
- c#使用API截屏类
- 用oracle中的序列替换sql server中top的方法
- 在csdn上好玩的话
- C++学习笔记(一)
- J2SE(TM) 5.0语言元素
- CodeSmith基础(一) http://www.cnblogs.com/Bear-Study-Hard/archive/2005/12/19/300112.html
- 第一次作业题目运用三大关键分析产品 Search.csdn.net
- 页面自动刷新
- 显示隐藏框架
- 第二次作业:search.csdn.net 改版产品市场说明书
- _WIN32_WINNT
- 应用div模拟prompt存在的未能解决的问题