C++基于C语言有如下方面的增强:
更为严格的类型检查
新增变量引用
支持面向对象
类和对象、继承、多态、虚函数及RTTI (运行时类型识别)新增泛型编程
支持模板,标准模板库(STL)
支持异常处理
支持函数及运算符重载
支持名字空间
用于管理函数名、变量名及类
c和c++的一些区别
1.c++不允许出现多个 同名的全局变量
2.c里面 const修饰的变量是可以通过指针去修改的,c++不能修改
3.c语言里面 int *p = NULL, c++中使用 nullptr
4.引用
数据类型+&+变量名
取别名
函数的传参,函数的返回值
5.函数重载
函数名一样,参数的个数或者类型不一样
6.默认参数
默认参数只能从右边开始设置
传参是从 左边开始赋值
注意~~~~默认参数和函数重载可能会有歧义
7.输入输出
iostream
cout 输出
cin 输入
8.强制转换
(类型)变量名 eg: (int)a
类型(变量名) eg: int(a);
9.内联函数
关键字 inline
要求:代码简单(5个语句), 不能有循环swich这样的语句
使用该函数是直接编译到主函数,不需要函数的跳转,要求函数的声明和定义都写在头文件
10.结构体
c++结构体可以有函数,并且拥有this指针,还有三个权限 public private protected
11.变量
局部
在函数或一个代码块内部声明的变量,称为局部变量。它们只能被函数内部或者代码块内部的语句使用。下面的实例使用了局部变量:
#include <iostream>
using namespace std;
int main ()
{ // 局部变量声明
int a, b; int c;
// 实际初始化 a = 10;
b = 20;
c = a + b;
cout << c;
return 0;
}
全局
在所有函数外部定义的变量(通常是在程序的头部),称为全局变量。全局变量的值在程序的整个生命周期内都是有效的。
全局变量可以被任何函数访问。也就是说,全局变量一旦声明,在整个程序中都是可用的。下面的实例使用了全局变量和局部变量:
#include <iostream>
using namespace std;
// 全局变量声明
int g;
int main ()
{ // 局部变量声明
// 实际初始化
a = 10;
b = 20;
g = a + b;
cout << g;
return 0;
}
命名空间 ::
#include <iostream>
using namespace std;
void func()
{
cout<<"func"<<endl;
}
namespace myspace //命名空间
{
int a = 5 ;
void func()
{
cout<<"func_my"<<endl;
}
};
int main()
{
myclass :: a = 1;
myspace :: func();
cout<<"a="<<myspace :: a <<endl;
}
类域 ::
类作用域指的是在类内部声明的变量:
#include <iostream>
class MyClass {
public:
static int class_var; // 类作用域变量
};
int MyClass::class_var = 30;
int main() {
std::cout << "类变量: " << MyClass::class_var << std::endl;
return 0;
}
12.堆区空间开辟
c : malloc free 函数
c++ : new delete 关键字 eg:new int[n] , delete []p