C++学习笔记1
C++ 基本语法
最简版C++
大部分基本语法和C语言相似!
输入输出流
- 头文件:
#include <iostream>
- 命名空间:
std
using namespace std;
cin 输入
cout 输出
命名空间
用于 防止程序中的同名问题,最常见的是使用 std
命名空间。
const 常量
常量名最好使用全大写来表示常量。
const int LENGTH = 10;
new 和 delete
new
、delete
用于堆空间的分配和回收。相当于C语言的malloc
、free
。
说明:
使用这样的语句可以用于分配和释放一个 动态数组。也就是说,数组的大小可以在运行时确定的。
new
- 用于从堆中分配指定大小的内存区域,并返回获得内存区域的首地址。
- 相比较于
malloc
可以自动计算大小,无需指针转换。 - 用法如下:
int* arr = new int[100]; /* 对于malloc */ int* arr1 = (int*)malloc(100*sizeof(int));
delete
- 用于释放
new
分配的堆内存 - 用法如下:
delete[] arr; /* 对于free */ free(arr1);
引用
引用是某个对象(即变量)的别名,定义形式如下:
类型 &引用名 = 变量名
例如:
int a = 10;
int &b = a; // b为引用变量,相当于变量a的别名。
引用很少单独使用,常常作为形参的方式来使用。
void swap(int &a, int &b);
PS:
- 在 变量声明时出现
&
才是引用运算符,其它地方的&
都是取地址运算符。 - 引用代表一个变量的别名,必须在定义时初始化,不能在定义完成后在赋值。
- 一个引用名只能作为一个变量的别名。
形参传递方式
传值
传址
传引用
- 对于传引用的传参方式,形参变量名相当于是实参的别名
- 此时操纵形参等同于直接操纵实参对应的内存空间!
- 和传址相比较,可以理解成
- 传址:相当于Linux中的软连接。
- 传引用:相当于Linux中的硬链接。
void swap(int &a, int &b)
{
;
}
函数重载
一个函数可以有多种写法,一般是函数名相同,参数不同。
C语言不支持函数重载!
注意:
- 重载函数的形参必须不同:个数不同或类型不同,不能仅仅是形参名/函数返回类似不同!
- 编译程序将根据实参和形参的类型及个数的最佳匹配来选择调用哪一个函数。
- 不要将不同功能的函数声明为重载函数,以免出现调用结果的误解、混淆。
带默认参数值的函数
- 函数在声明时可以预先给出默认的形参值。
- 调用时如给出实参,则采用实参值。
- 否则采用预先给出的默认参数值。
- 带默认参数值称之为缺省参数!
- 如果一个函数有原型声明,且原型声明在定义之前,则默认参数值必须在原型声明中给出。且函数定义出不能在给出默认参数值,即使默认参数值一模一样!
例如:int add(int x = 5, int y = 6); // 原型声明在前 int main(void) { ; } // 定义在后 int add(int x, int y) { // 此处不能再指定默认值! ; }
类与对象
基本概念
类