1.泛型编程:应用与模版,可以实现一个接口可以处理多种数据类型。
2.c++标准:c++98、描述了已有的 c++特性,还对语言进行了扩展,添加了异常、运行阶段类型识别(RTTI)、模板和标准模 板库(STL).
3.之前的cpp头文件是xx.h,现在是cpp头文件是xx,也可以是cxx;
例:
#include <iostream>//标准输入输出头文件
using namespace std;//命名空间(cout,cin..)
int main(int argc, char *argv[])
{
//cout输出设备 endl换行符
cout << "Hello World!哈哈" << endl;
//cin输入
int num;
int num1;
cin>>num>>num1;//cin输入,如果获得多个变量,空格分割
cout<<"num="<<num<<endl;
cout<<"num1="<<num1<<endl;
return 0;
}
一、面向对象的三大特点:
1.封装:类将成员变量和成员函数封装在类的内部,根据需要设置访问权限,通过成员函数管理内部状态;
2.继承:所表达的是类之间相关的关系,这种关系使得对象可以继承另外一类对象的特征和能力;
继承的作用:避免公用代码的重复开发,减少代码和数据冗余。
3.多态:同一个函数可以处理不同类型的数据,有多个功能。
二、C++较C的扩展
2.1::作用域运算符
作用:①解决局部变量与全局变量的重名问题
②注意二义性问题
如果全局和局部都有同一变量,在局部变量作用域下,局部变量的优先级较高;
三、命名空间
Namespace:命令空间、名字空间、名称空间
解决问题:解决名称冲突问题。
定义格式:
Namespace A{
Int a;
Int c;
}
注意:①不能定义到函数内部,只能定义到全局。
②命名空间可以嵌套
③命名空间增加变量是开放的,namespace可以嵌套函数、变量、符号常量、结构体也可以嵌套另一个namespace
#include <iostream>
using namespace std;
namespace A {
int a=2;
int b=3;
int c=4;
namespace B {
int d=6;
}
void fun(void){
cout<<"fun is run"<<A::a<<endl;
}
}
namespace A {
int num=10;
}
int main(int argc, char *argv[])
{
cout << A::a << endl;
cout << A::b << endl;
cout << A::c << endl;
cout << A::B::d << endl;
cout << A::num <<endl;
A::fun();
return 0;
}
④命名空间可空间内定义,外部声明。
命名空间函数的定义必须加上命名空间的作用域
⑤无名命名空间(尽量不使用、可能跟全局变量,)
无名命名空间,意味着命名空间中的标识符只能在本文件内访问,相当于给这个标 识符加上了 static,使得其可以作为内部连接
取别名:
namespace veryLongName{
int a = 10;
void func(){
cout << "hello namespace" << endl;
}
}
void test(){
namespace shortName = veryLongName;
cout << "veryLongName::a : " << shortName::a << endl;
veryLongName::func();
shortName::func();
}
⑥using 编译指令使整个命名空间标识符可用.
注意:使用 using 声明或 using 编译指令会增加命名冲突的可能性。也就是说,如 果有名称空间,并在代码中使用作用域解析运算符,则不会出现二义性。
也可以是函数。
发现某一个实现文件中有太多的 using 指令而产生的命名 冲突,就要对该文件做个简单的改变,通过明确的限定或者 using 声明来消除名字 冲突,这样不需要修改其他的实现文件。
四、(C++较C语言)全局检测增强
声明不能省略extern
五、C++中所有的变量和函数都必须有类型
**C语言函数参数如果为空,可以传递任意个数,类型的参数,函数内部不可用;
**C语言函数参数如果是void,不可用传参
**C语言函数参数可以无类型,可以传递类型的参数
**C++形参空着和加void都一样,都代表不能传参,C++形参不可无类型
函数返回值也要有类型。
5.1严格的类型转换
1.在 C++,不同类型的变量一般是不能直接赋值的,需要相应的强转。
例:C++中给枚举变量赋值
2.struct类型加强:c 中定义结构体变量需要加上 struct 关键字,c++不需要。
c 中的结构体只能定义成员变量,不能定义成员函数。c++即可以定义成员变量, 也可以定义成员函数
3.C++结构体中可以定义函数,但是C语言不行。
5.2bool类型关键字
1.准 c++的 bool 类型有两种内建的常量 true(转换为整数 1)和 false(转换为整数 0)
2.bool 类型占 1 个字节大小
3.给 bool 类型赋值时,非 0 值会自动转换为 true(1),0 值会自动转换 false(0)
5.3三目运算符增强
1.c 语言三目运算表达式返回值为数据值,为右值,不能赋值
2.c++语言三目运算表达式返回值为变量本身(引用),为左值,可以赋值。