引用
- 为对象起了一个另外的一个名字(引用即别名)
注意:指向常量的引用是非法的
可修改为:
const int& ref = 100;
引用必须要初始化,引用使用之前不需要测试有效性,因此引用效率可能比使用指针效率高。
引用和指针的关系
- 引用对指针进行了简单的封装,底层仍然是指针
- 获取引用地址时,编译器会进行内部转换
指针和数组
数组:
- 存储在一块连续的内存空间中
- 数组名就是这块连续内存空间的首地址
swap()的例子
#include<iostream>
using namespace std;
void swap1(int,int);
void swap2(int*,int*);
void swap3(int&,int&);
int main()
{
const double & d = 12.3;
int num1 = 10,num2 = 5;
swap1(num1,num2);
cout << "swap1 "<< num1 << " "<<num2 << endl;
swap2(&num1,&num2);
cout << "swap2 "<<num1 << " "<<num2 << endl;
swap3(num1,num2);
cout << "swap3 "<<num1 << " "<<num2 << endl;
return 0;
}
void swap1(int num1,int num2){
int temp = num1;
num1 = num2;
num2 = temp;
}
void swap2(int* num1,int* num2){
int temp = *num1;
*num1 = *num2;
*num2 = temp;
}
void swap3(int& num1,int& num2){
int temp = num1;
num1 = num2;
num2 = temp;
}
聊天框实例
#include<iostream>
using namespace std;
//模拟实现游戏中私聊的函数
string chatTo(const string& toName,const string& content){
string msg = "你悄悄地对[" + toName + "]说" + content;
return msg;
}
string chatFrom(const string& fromName,const string& content){
string msg = "[" + fromName + "]悄悄地说" + content;
return msg;
}
int main()
{
cout << "请输入对方的名称" ;
string toName;
getline(cin,toName);
cout << "请输入发送给对方的聊天信息";
string content;
getline(cin,content);
string chatMsg = chatTo(toName,content);
cout << endl;
cout << chatMsg << endl;
chatMsg = chatFrom("对方",content);
cout << endl;
cout << chatMsg << endl;
return 0;
}