一、C++与C语言的关系
C++继承了C语言所有的语法特点(全面兼容C语言),同时在此基础上扩展了面向对象编程,泛型编程,多态,继承,模板等等特性
C语言头文件 | C++头文件 |
---|---|
xxx.h | xxxx.hpp或者xxx.h |
.c | .cpp |
gcc/arm-linux-gcc | g++/arm-linux-g++ |
#include <stdio.h> | #include |
二、C++中的输入和输出
1.输出
#include<iostream>
using namespace std;
cout<<变量的名字;//\n用endl替换
例:
int a=15;
float b=45.6;
cout<<a<<endl;
cout<<b<<endl;
2.输入
#include<iostream>
using namespace std;
cin>>变量的名字; //初学者很容易弄错,容易对变量取地址
例:
cin>>a;
cin中有一个 good() 方法, 数据类型输入正确返回1 数据类型输入错误返回0
二、C++中的命名空间(名称空间)
1.引入命名空间
作用: 防止变量冲突
语法规则:
namespace 命名空间的名字
{
成员;
}
使用:
命名空间作用域运算符
namespace uu
{
int num;
}
uu::num; //表示我要使用命名空间uu中的num
写法一: 通过命名空间的名字
uu::num
写法二: 通过使用using namespace 命名空间的名字; //声明一个命名空间
简化书写,代码中可以直接使用命名空间中变量的名字
三、C++中的函数重载(function overload)
1. 函数重载
函数重载指的是C++允许同一个函数名,具备不同的表现形式
C语言中不能在同一个程序中出现多个名字相同的函数
例:int add(int a,int b);和float add(float a,float b);
编译器如何区分不同版本的函数?
原理:从左到右去检查实参的个数和类型(不检查返回值)有没有完全匹配的,没有就报错
2. 函数重载的特点和要求
(1)函数名字必须一模一样
(2)参数的个数或者类型至少要有一个是不一样的
(3)函数重载不关心返回值类型,只关心参数个数或者类型是否不同
理论概念: 函数重载是C++中实现多态的一种手段之一,称之为编译时多态
四、C++中动态分配内存
1. C语言和C++中分配空间
C语言中:
分配堆空间 malloc() calloc() realloc()
释放堆空间 free()
C++中:
分配堆空间 new关键字
释放堆空间 delete关键字
2. 注意:
new char(65); //等价于char *q=malloc(sizeof(char)) *q=10;
new char[65]; //等价于char *p=malloc(65*sizeof(char));
delete []p; //堆空间分配的多个类型大小
delete q; //堆空间分配只有一个类型大小
五、C++中字符串string
在线的C++文档:www.cplusplus.com
C语言中表示存储字符串:
方法一: char buf[] 数组存放
方法二: char *p=malloc();
C++使用string类型表示字符串
string 字符串名字
六、C++中的引用
1. C语言和C++中传递参数的方法
C语言中传递参数只有两种方式: 传值 传地址
C++中传递参数有三种方式: 传值 传地址 传引用
引用:理解为就是变量的一个别名
语法:类型名 &引用名
两种常见的引用:
第一种:普通变量的引用
int b=58;
int &a=b; //定义了一个int类型的引用,名字叫做a,该引用指向b
float c=14.5;
float &d=c;
第二种:指针的引用
int a = 56;
int *p = &a;
int *&h = p;
2.特点:
(1)引用不占用额外的存储空间,它仅仅只是变量的一个别名(它跟变量都是表示同一块内存区域)
实际用途:节约内存空间
(2)引用具备了传值和传地址的双重特性(指针和普通变量的特性都具备)
(3)引用必须定义的时候立马初始化
3.应用
(1)引用作为函数的参数(最常见),节约空间
(2)引用作为函数的返回值