C++与C语言联系:
C++是C语言的增强版;
C++在C语言的基础上增加了很多新的内容;
编程的思想有转变,C面向过程,C++面向对象,面向对象是通过面向过程实现的;
命名空间:
命名空间的作用是为了解决命名冲突的问题;
定义方法:
Namespace 命名空间名
{
变量名;
函数名;
类型名;
....
};
访问方式:空间名::变量名
using Namespace 空间名;变量
引用:就是变量的别名;
目的:1、弱化指针,原来需要使用指针的地方现在使用引用可以达到同样的效果,并且使用更加方便;
2、减少临时空间的产生;
定义方式:数据类型 &引用名 = 变量名;
(注意:1、访问引用就是在访问变量 2、引用不会开辟空间,他和变量共用同一个内存空间 3、引用在定义的时候必须初始化)
const修饰的引用:
1、防止实参被修改
2、也可以作为常量的别名
例:const int &a=100;
引用与指针的区别:
1、定义时引用必须被初始化,指针没有强制要求(尽量初始化,避免野指针)
2、没有空引用,但是有空指针
3、sizeof的意义不同,sizeof引用时得出的是变量的大小,sizeof指针时得出的是指针的大小,32OS为4,64OS为8;
4、引用自加是变量本身大小+1,指针自加是向后移动一个类型大小的地址
5、访问实体时引用不需要解引,指针访问实体时需要用到取值符号
6、引用比指针使用更加方便
函数重载:功能类似,函数名相同,参数不同(参数个数与类型不同),与返回值无关,这样的函数互为重载
函数重载实现原理:是因为g++编译器在编译阶段就会对函数进行重命名,(函数名实际就是函数的入口地址),就可以实现调用不同参数的同名函数;
那么如何实现C++中调用C库函数呢(让g++编译器不对函数重命名)
int main()
{
#ifdef _cplusplus
extern "C"//告诉g++以下函数不需要重命名
{
//函数名
}
#endif
}
函数的默认参数:
函数在声明时的形参可以有默认参数,如果函数调用时没有传参,那么函数的参数就会使用定义函数时的默认值(注意:定义时默认值必须从右向左,不可以左边的参数有默认值,而右边的参数反而没有默认值)
C++中的结构体与C语言的结构体有什么区别?
答: 1、c中结构体被不能有函数,但C++可以
2、C中空结构体内存大小为0,C++空结构体内存大小为1;
C++中类与结构体的区别?
答:
1、类的访问限定符是private,结构体为public
访问限定符:
public修饰的成员:公有的,类内类外均可以被访问
protect修饰的成员:受保护的只能在类内被访问
private修饰的成员:私有的,只能在类内被访问
2、类中可以存放函数而结构体不可以
C++的结构体和C中结构体的区别:
C++中空结构体的大小为1,C中空结构体的大小为0
对象:用类这种自定义的数据类型定义的变量,类的数据类型是抽象的,对象是具体的实体,所