1.命名空间
命名空间是一个程序员自己命名的内存区域,他可以根据需要指定一些有名字的空间域,把一些全局实体分别放在各个命名空间中,从而与其他全局实体分隔开来,以免产生名字冲突。
例如:
namespace apple
{
int a;
double b;
}
namespace是定义命名空间所必需的关键字,apple是用户自己指定的命名空间的名字,花括号内是声明块,其中声明的实体是命名空间成员。apple包括变量a和b,a和b是全局变量,仅仅是把他们藏在命名空间中而已,如果在程序中要使用a和b,必须加上命名空间名和作用域分辨符::(apple::a),
2.C++基本的输入输出流(简单介绍一下就行)
cout<<"hello"<<endl;输出
cin>>"hello">>endl;输入
3.重载
定义:函数重载:对一个函数名重新赋予它新的含义,使一个函数名可以多用,所谓重载就是一物多用。
限制:重载函数的参数个数、参数类型、参数顺序中必须至少有一种不同。
C++为什么支持重载?:
因为C++有函数名称修饰规则(函数名、函数参数数量及类型信息)
编译器内部完成了翻译部分:(此处是借鉴他人的理论)
1.预处理
1)头文件展开
2)宏的替换
3)去注释
4)条件编译
2.编译过程:将高级语言转为汇编语言
3.汇编过程:汇编语言转为二进制程序
链接部分:所引用的数据链接进来
比如一个函数的声明如下:
void function(int x,int y);
在c语言中,编译器在编译后在库中的名字为_function
在c++中,编译器在编译后在库中的名字为_function_int_int
还有一个函数的声明如下:
void function(float x,float y);
在c语言中,编译器在编译后在库中的名字为_function
在c++中,编译器在编译后在库中的名字为_function_float_float
在链接时,都是找名字进行链接的,就比如以上两个函数,
在C语言中两个的名字一样,就会在链接中报错。
C++中它们的名字不一样,所以就不会报错。
4.C++缺省参数
(1)全缺省参数
int add1(int a=0,int b=0)
{
return a+b;
}
(2)半缺省参数
int add2(int a,int b=0)
{
return a+b;
}
void test()
{
add1();
add1(1,1);
add2(2);
add2(2,2);
}
不能用add1(,2);要先传前面的,如add1(2,);
5.指针和引用(概念、使用方法、做参数、做返回值的作用,指针和引用的区别)
(1)引用只能在定义时初始化一次,之后不能改变指向其他变量;指针变量的值可以改变;
(2)引用必须指向有效的变量,指针可以为空;
(3)指针和引用自增和自减意义不一样;
(4)sizeof指针对象和sizeof引用对象不一样,sizeof引用得到的是所指向变量的大小,而sizeof指针是对象地址的大小。
(5)相对来说,引用比指针更安全。
注意:指针比引用更加灵活,但也更危险,使用指针时一定要注意检查指针是否为空,指针所指的地址释放以后最好置0,否则可能存在野指针。
命名空间是一个程序员自己命名的内存区域,他可以根据需要指定一些有名字的空间域,把一些全局实体分别放在各个命名空间中,从而与其他全局实体分隔开来,以免产生名字冲突。
例如:
namespace apple
{
int a;
double b;
}
namespace是定义命名空间所必需的关键字,apple是用户自己指定的命名空间的名字,花括号内是声明块,其中声明的实体是命名空间成员。apple包括变量a和b,a和b是全局变量,仅仅是把他们藏在命名空间中而已,如果在程序中要使用a和b,必须加上命名空间名和作用域分辨符::(apple::a),
2.C++基本的输入输出流(简单介绍一下就行)
cout<<"hello"<<endl;输出
cin>>"hello">>endl;输入
3.重载
定义:函数重载:对一个函数名重新赋予它新的含义,使一个函数名可以多用,所谓重载就是一物多用。
限制:重载函数的参数个数、参数类型、参数顺序中必须至少有一种不同。
C++为什么支持重载?:
因为C++有函数名称修饰规则(函数名、函数参数数量及类型信息)
编译器内部完成了翻译部分:(此处是借鉴他人的理论)
1.预处理
1)头文件展开
2)宏的替换
3)去注释
4)条件编译
2.编译过程:将高级语言转为汇编语言
3.汇编过程:汇编语言转为二进制程序
链接部分:所引用的数据链接进来
比如一个函数的声明如下:
void function(int x,int y);
在c语言中,编译器在编译后在库中的名字为_function
在c++中,编译器在编译后在库中的名字为_function_int_int
还有一个函数的声明如下:
void function(float x,float y);
在c语言中,编译器在编译后在库中的名字为_function
在c++中,编译器在编译后在库中的名字为_function_float_float
在链接时,都是找名字进行链接的,就比如以上两个函数,
在C语言中两个的名字一样,就会在链接中报错。
C++中它们的名字不一样,所以就不会报错。
4.C++缺省参数
(1)全缺省参数
int add1(int a=0,int b=0)
{
return a+b;
}
(2)半缺省参数
int add2(int a,int b=0)
{
return a+b;
}
void test()
{
add1();
add1(1,1);
add2(2);
add2(2,2);
}
不能用add1(,2);要先传前面的,如add1(2,);
5.指针和引用(概念、使用方法、做参数、做返回值的作用,指针和引用的区别)
(1)引用只能在定义时初始化一次,之后不能改变指向其他变量;指针变量的值可以改变;
(2)引用必须指向有效的变量,指针可以为空;
(3)指针和引用自增和自减意义不一样;
(4)sizeof指针对象和sizeof引用对象不一样,sizeof引用得到的是所指向变量的大小,而sizeof指针是对象地址的大小。
(5)相对来说,引用比指针更安全。
注意:指针比引用更加灵活,但也更危险,使用指针时一定要注意检查指针是否为空,指针所指的地址释放以后最好置0,否则可能存在野指针。