文章目录
🌿前言:本系列笔记是主要是对于谭浩强的c++程序设计的学习笔记再加上一些我自己的理解。如果有误欢迎大家指出。
建议是有基础的同学快速入门,或者复习用
一、简单的C++程序
#include<iostream> //预编译指令
using namespace std; //使用命名空间
int main() //函数头
{ //该行及以下为函数体,也就是用花括号包围起来的部分
return 0;
}
二、C++对C的扩充
1.C++的输入输出
输入简单来说就是cin+>>+你要输入的内容+分号。与输入类似,输出就是cout+<<+你要输出的内容+分号。
2.用const定义常变量
直接在定义语句前加入const即可
3.函数原型声明
与函数定义相同,位于主函数中,记得句末加上分号
4.函数重载
在同一作用域可用同一函数名定义多个函数,其参数个数或类型必须至少有一个不同,返回值类型可同也可不同。
int max(int a,int b,int c)
{
if(b>a)a=b;
if(c>a)a=c;
return a;
}
int max(int a,int b)
{
if(b>a)a=b;
return a;
}
5.函数模板
建立一个通用函数,其函数类型和形参类型不具体指定,用一个虚拟类型来指定(凡是函数体相同的函数都可以用函数模板来代替,只需在模板中定义一次即可)
template< typename T >
通用函数定义
template<typename T>
T max(Ta,Tb,Tc)
{
if(b>a)a=b;
if(c>a)a=c;
return a;
}
6.有默认参数的函数
给定默认参数的方法,如
float area(float r=6.5);
如果有多个形参,也可以只对部分形参指定默认值
函数原型如下:
float volume(float h,float r=12.5);
指定默认值的参数必须放在形参表列的最右端,如:
void f1(float a,int b=0,int c,char d='a'); //不正确
void f1(float a,int c,int b=0,char d='a'); //正确
一个函数不能即作为重载函数又作为有默认参数的函数
7.变量的引用
- 概念
引用,又叫别名,作用是为一个变量再起另外一个名字,以便在需要时可以方便,间接的引用改变量。
声明方法举例:
int a;
int &b=a;//(&是引用声明符。)
- 关于引用的简单说明
(1)对引用的初始化可以用变量名,也可以用另一个引用。
(2)引用不另外开辟内存单元,在声明引用时必须同时使其初始化,即声明其代表哪一个变量
(3)引用在初始化后不能再被重新声明为另一变量的别名。
- 将引用作为函数参数
C++之所以增加引用,主要是利用它作为函数参数,以扩充函数传递数据的功能
传值方式调用——将实参的值传给形参,形参是实参的拷贝
引用方式调用——将实参的地址传给引用型形参,这时形参与实参是同一个变量。
void swap(int &a,int &b)
{
int t;
t=a;
a=b;
b=t;
}
-
对引用的进一步说明
(1)不能建立void类型的引用
(2)不能建立引用的数组
(3)可以把变量的引用的地址赋给一个指针,此时指针指向的是原来的变量。但不能定义指向引用类型的指针变量,即不能写成
void swap(int &a,int &b) { int t; t=a; a=b; b=t; }
(4)可以建立指针变量的引用
int i=5; int *p=&i; int *&pt=p;
(5)可以用const对引用加以限定,不允许改变引用的值
(6)可以用常量或表达式对引用进行初始化,但此时必须用const进行声明
int i=5; const &a=i+3;
用这种办法不仅可以用表达式对引用初始化,还可以用不同类型的变量对其进行初始化(要求要能赋值兼容)
8.内置函数
内置函数——嵌入主函数的函数,适用于规模很小且频繁使用的函数
节省运行时间,却增加了目标代码长度。
在函数首部加一个inline即可
9.作用域运算符
作用域运算符“::”,可以指定所需要的作用域
10.字符串变量
(1)定义字符串变量
需包含string的头文件
string str1;
(2)对字符串变量赋值
可以用赋值语句,也可以用另一个字符串变量对其赋值
还可以对字符串变量中的某一字符进行操作
string word="Then";
word[2]='a';//修改后变为“Than”
(3)字符串变量的输入输出
cin>>str1;
cout<<str2;
(4)字符串变量的运算
复制用赋值号“=”
连接用加号
比较直接用关系运算符
(5)字符串数组
string n[5];
不要求每个字符串元素有相同的长度
每个字符串元素只包含本身字符不包括“\0”
数组里的字符串变量里存放的是字符串的指针
11.动态分配和撤销内存的运算符new和delete
molloc和free
new运算符使用的一般格式:
new 类型[初值];
分配数组空间时不能指定初值
new int(100);
new char[10];
delete运算符使用的一般格式:
delete []指针变量;(加一对方括号代表是对数组空间的操作)
delete p;
delete []pt;