C++_QF

C++

基础部分

关于C++头文件:

一般不加.h,如果是自己定义的头文件则需要加.h;C语言加.h;在C++中使用C语言的头文件一般前面加C 例如:Cmath

C面向过程:

自顶向下,逐层细化。

多态:

​ 一个接口,多种方法。在程序运行时才能决定调用的函数。

​ 动态多态:运行时确定函数地址

​ 静态多态:函数重载,运算符重载。编译期间多态。

命名空间解决命名冲突:
namespace A{
	int a=10; // 命名空间只能在全局范围内定义。
}
用法:A::a
  • 命名空间的嵌套:都是属于全局变量的。

    A::B::a
    
C/C++结构体区别:

c++结构体①可以有成员函数②使用时不需要加 struct 关键字; C语言反之

C++含有bool类型:

C++中true为整数1,false为0;bool类型占据1字节大小,即1Byte=8bit;

C89没有bool类型,

const在C/C++的区别:

​ const修饰的局部变量在C语言中意为一个只读的变量,但是可以通过指针间接的修改它的值。全局变量不可以!

在c++中:(可修改但:)

​ 1、对于基础数据类型,也就是const int a=10;编译器会把它放在符号表中,不分配内存,当对其取地址时,会分配内存。在使用时,如果用的是指针则取内存中的数值,如果用的是变量名则取符号表中的数值。两者值不同。

​ 2、如果以变量的形式初始化const修饰的变量,系统欧冠会为其开辟空间

int b=10;
const int a =b; //系统会给a开辟内存。不会把a放入符号表中

​ 3、const 自定义数据类型(结构体,对象)系统会分配空间。

​ const修饰的全局变量默认是内部链接,(只在当前源文件内有效 不能直接作用与别的源文件中) 如果 想要用在其他源文件中需要添加extern将其转换成外部链接。

引用:(起别名)
int num =10;
int &a=num; //①引用必须初始化②引用一旦初始化就不能再次修改别名。			
  • ①引用必须初始化
  • ②引用一旦初始化就不能再次修改别名。

主要应用于作为函数的参数

数组的引用1

    int arr[5]={1,2,3,4,5};
    int (&my_arr)[5]=arr;//加()是考虑中括号优先级问题		

数组的引用2:用typedef 给数组类型取别名

typedef int TYPE_ARR[5];
int arr[5]={1,2,3,4,5};
TYPE_ARR &myArr =arr;  //myArr就是arr的别名。

​ TYPR_ARR 就是一个数组类型(有5个元素 每个元素位 int)

·引用作为函数的返回值类型
  • 不要返回局部变量的引用: 因为局部变量在栈区,生命周期短。
  • 函数的调用可以作为左值 :加static解决上面的问题。
·引用的本质是一个常量指针:
int *const ref =&a;
·常量引用

常量引用主要用来修饰形参,防止误操作。

在函数形参列表中,可以加const修饰形参,防止形参改变实参。

常量指针和指针常量:

1、常量指针:指针的指向可以修改,指向的值不可以修改。

2、指针常量:

int a=10;
int b =20;
const int *p1 = &a; //常量指针:指针的指向可以修改
						改:	p1 = &b;
int *const p2 = &b; //指针常量:指针指向的值可以修改
						改:  *p2 = 10;
				
重载:

​ 同一个作用域内,函数名相同,参数列表不同。

–常引用参数重载–
void func(int &a)
void func(const int &a)  常引用做重载条件

​ class和struct的区别:默认访问权限不同:class-private;struct-public

构造-析构-拷贝构造

​ 拷贝构造:(拷贝构造函数不能初始化匿名对象)

Student(const Student &s);
拷贝构造三种调用时机:

1、使用一个已经创建完毕的对象来初始化一个新对象。

2、值传递方式给参数传值。

3、值方式返回局部对象。

深拷贝和浅拷贝:

​ 浅拷贝:增加了一个指针指向已存在的内存地址。

​ 深拷贝:自己在堆区new了一块内存,并生成一个指针指向这块内存。

~Person()
{
    if(heght != NULL)  //手动释放堆区内存。
    { 
     delete m_Height;
     m_Height =NULL; //指向空,防止野指针。
    }        
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值