面向对象程序设计(C++)基本知识点(一)

最近在复习C++考试,整理了部分基础知识点,在这里分享一部分,类与对象会在后面的文章中介绍。内容比较简洁,仅适合对C++产生一个大致印象,如果对更多的细节感兴趣可以翻阅一些专业书籍,如著名的《C++ Primer Plus》。如有错误请指出。

1 基本概念

1.1 基本数制

16进制:0x; 8进制:0。

1.2 基本数据类型

在这里插入图片描述

1.3 常量

整型常量、实型常量、字符串常量、符号常量。

1.4 变量

1.5 运算符与表达式

不同数据类型转换规则:占用内存空间大的数据类型为主。

关系运算符与关系表达式、 逻辑运算符与逻辑运算表达式、条件运算符与条件表达式、位运算符与位运算表达式、赋值运算符与赋值表达式、逗号运算符与逗号表达式、sizeof运算符

1.6 编译预处理

预编译(宏展开),将宏名替换为字符串。

#define 标识符
//定义宏:宏有歧义,特别是自增(i++)等运算时。
#define max(a, b) (a) > (b)? (a) : (b)

#endef 标识符    //解除#define语句定义的标识符

#include<头文件> //与“”的差别在于检索目录的顺序不同。

#ifdef...#else...#endif  //如果有/没有定义宏,执行以下代码。
#ifndef...#else...#endif

1.7 编程步骤

源代码(cpp)-> 编译器 -> 目标代码(object code,机器语言) -> 链接程序(启动代码、库代码) -> 可执行代码。

2 程序控制结构

2.1 格式控制符

在这里插入图片描述

2.2 几个特殊函数

  • goto():无条件跳转,编译器不做任何条件判断,谨慎使用。
  • exit(), _exit(), abort():在头文件process.h or stdlib.h中,表示退出程序(进程)。

3 函数

3.1 参数传递

  • 值调用:实参的值不会改变

  • 引用调用:swap(&a, &b),传递变量地址

  • 地址调用:传递变量地址

  • 函数 & 指针:void sum_arr(int arr[], int n)实际arr[]表示的是一个指针。但只有在作为函数参数时才能这么用。因此必须传递首地址+数组长度。

3.2 函数重载

函数名称相同,参数类型和参数个数不同。仅返回值类型不同不能重载。

3.3 内联函数

用inline修饰,必须出现在对其的调用之前。函数体内不能有循环、switch分支、复杂if嵌套。编译器会把不适合作为内联的函数视为普通函数。

tips:内联函数依然是函数,进行参数传递。而宏并非是参数传递,而是文本替换(宏是C语言中的内联函数,可以考虑把宏转换为C++内联函数)。如:

#define SQUARE(X) X * X
a = SQUARE(4.5 + 7.5) // -> 4.5 + 7.5 * 4.5 + 7.5,自增运算同理结果不太对。

3.4 函数模板

template <class Any>  //Any只是一个名称
Any swap(Any &a, Any &b)
{
    //...
}

3.5 存储类别

  • 自动存储auto:作用域为包含它的代码块。自动释放,可重新分配。auto和static变量的寿命被限制。
  • 静态存储static:存在于程序的整个生命周期,存放于静态存储区(与全局变量一起)。静态变量的初值仅在分配存储空间的时候设置一次,程序运行期间不可再赋值。
  • 动态存储new和delete。

3.6 内存构成

  • 栈:系统自动控制,存放函数参数、局部变量。大小有限制。速度快。
  • 堆:new和malloc控制。链表结构,速度慢、
  • 静态存储区:存放全局变量和静态变量。
  • 字符常量区:存放常量字符串。
  • 程序代码段:存放代码。
  • 虚存的地址空间:VitualAlloc。

4 指针

4.1 地址和指针

  • 地址:变量地址&variable;数组地址数组名;函数地址函数名。

4.2 指针运算

int *nA, x;
nA = &x;
cout << *nA;  //2

*(ptr+2);  //->ptr[2]

4.3 动态内存管理

new和delete。

*ptr = new int;

tips:

  • 内存需要通过delete释放。
  • 分配成功与否需要测试(堆中空间不足会返回NULL)。

4.4 指针和函数

  • 指针作为函数的参数。
  • 返回指针的函数。需要注意的是,返回的指针不能是局部变量的指针,因为函数一结束这个局部变量就没了。可以是静态变量或者分配在堆上的其他空间。
  • 指向函数的指针。常在插件时使用。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值