No.36我与代码的日常: 初识C++

昨天我正式地接触到了C++,我了解到了它与C语言的不同。以下是我初识C++的学习笔记。

1.C++的输入输出风格

//C++的输入与输出
#include  <iostream>
#include <stdlib.h>
using namespace std;
int main()
{
	int a;
	double b;
	char c;
	cout << "请输入:";
	cin >> a;
	cin >> b >> c;

	cout << a << endl;
	cout << b << " " << c << endl;
	system("pause");
	return 0;
}

结果如下:
在这里插入图片描述
2.缺省参数
缺省参数是声明或定义函数时为函数的参数指定一个默认值。在调用该函数时,如果没有指定实参则采用该默认值,否则使用指定的实参。

//缺省参数
#include  <iostream>
#include <stdlib.h>
using namespace std;
void TestFunc(int a = 10)
{
	cout << a << endl;
}
int main()
{
	TestFunc(); //输入会是什么呢?
	TestFunc(20); //输出会是什么呢?
	system("pause");
	return 0;
}

结果如下:
在这里插入图片描述
3.函数的重载
函数重载是函数的一种特殊情况,C++允许在同一作用域中声明几个功能类似的同名函数,这些同名函数的形参列表(参数个数 或 类型 或 顺序)必须不同,常用来处理实现功能类似数据类型不同的问题。
举例如下:

//函数重载
#include  <iostream>
#include <stdlib.h>
using namespace std;

int Add(int left, int right)
{
	return left + right;
}

double Add(double left, double right)
{
	return left + right;
}

long Add(long left, long right)
{
	return left + right;
}

int main()
{
	cout << "Add(10, 20) = " << Add(10, 20) << endl;
	cout << "Add(10.0, 20.0) = " << Add(10.1, 20.0) << endl;
	cout << "Add(10L, 20L = " << Add(10L, 20L) << endl;
	system("pause");
	return 0;
}

结果如下:
在这里插入图片描述
请考虑一下情况是否为函数重载呢?

short Add(short left, short right)
{
	return left + right;
}

int Add(short left, short right)
{
	return left + right;
}

编译器报错:
在这里插入图片描述
因为函数名相同且参数列表也相同。

4.引用
“引用”并非定义新变量而是取了别名。编译器不会为引用变量开辟内存空间。它和它引用的变量共用一块内存空间。
测试代码:

//引用
#include  <iostream>
#include <stdlib.h>
using namespace std;

void TestRef()
{
	int a = 10;
	int& ra = a;
	printf("&a = %p\n", &a);
	printf("&ra = %p\n", &ra);
}

int main()
{
	TestRef();
	system("pause");
	return 0;
}

结果如下:
在这里插入图片描述
引用的特性:

  1. 引用在定义时必须初始化
  2. 一个变量可以有多个引用
  3. 引用一旦引用一个实体,再不能引用其他实体
    测试代码:
//引用
#include  <iostream>
#include <stdlib.h>
using namespace std;

void TestRef()
{
	int a = 10;
	int& ra = a; //a的引用
	int& rra = a;//a的引用
	printf("&a = %p\n");
	printf("&ra = %p\n");
	printf("&rra = %p\n");
}

int main()
{
	TestRef();
	system("pause");
	return 0;
}

结果如下:
在这里插入图片描述
引用还可以做函数参数:

void Swap(int& left, int& right)
{
	int tmp = left ;
	left = right ;
	right = tmp ;
}

想想以下代码段会输出什么呢?

#include  <iostream>
#include <stdlib.h>
using namespace std;

int& Add(int a, int b)
{
	int c = a + b;
	return c;
}

int main()
{
	int& ret = Add(1, 2);
	Add(3, 4);
	cout << "Add(1,2) =" << ret << endl;
	system("pause");
	return 0;
}

引用和指针的区别:

  1. 引用在定义时必须初始化,指针没有要求
  2. 引用在初始化时引用一个实体后,就不能再引用其他实体,而指针可以在任何时候指向任何一个同类型实
  3. 没有NULL引用,但有NULL指针
  4. 在sizeof中含义不同:引用结果为引用类型的大小,但指针始终是地址空间所占字节个数(32位平台下占4
    个字节)
  5. 引用自加即引用的实体增加1,指针自加即指针向后偏移一个类型的大小
  6. 有多级指针,但是没有多级引用
  7. 访问实体方式不同,指针需要显式解引用,引用编译器自己处理
  8. 使用引用更加安全。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章