十三.对象模型和this指针

13 对象模型和this指针

  • 本章围绕四个知识点展开:成员变量和成员函数分开存储、this 指针、空指针访问成员函数、const 修饰成员函数。
  • 每个小节都配有完整可编译的示例代码,建议边看边动手,用 sizeof 和编译器的报错信息逐条验证结论。

13.1 成员变量和成员函数分开存储

作用:弄清楚一个类的对象到底占用多少内存,理解 ==成员变量和成员函数是分开存储的== 这一 C++ 对象模型的基本规则。

查看更多

十二.对象初始化和清理

12 对象初始化和清理

  生活中我们买的电子产品都基本会有出厂设置,在某一天不用时候也会删除一些自己信息数据保证安全。C++中的面向对象来源于生活,每个对象也都会有初始设置以及对象销毁前的清理数据的设置。

12.1 构造函数和析构函数

对象的初始化和清理也是两个非常重要的问题:

  • 一个对象或者变量没有初始状态,对其使用后果是未知
  • 同样的使用完一个对象或变量,没有及时清理,也会造成一定的安全问题
查看更多

十.引用

10 引用

作用:给变量起别名。引用是 C++ 相对 C 扩充的一个重要知识点,在函数参数和返回值中都会大量用到。

10.1 引用的基本使用

语法:数据类型 &别名 = 原名

示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
using namespace std;

int main() {

int a = 10;

//创建引用:给变量a起别名b
int& b = a;

cout << "a = " << a << endl;
cout << "b = " << b << endl;

b = 100; //给别名b赋值,就是给原名a赋值

cout << "a = " << a << endl;
cout << "b = " << b << endl;

system("pause");

return 0;
}

查看更多

九.内存分区模型

9 内存分区模型

作用:C++ 程序在执行时,将内存大方向划分为 4 个区域,分别是:代码区、全局区、栈区、堆区。==不同区域存放的数据,赋予不同的生命周期==,给我们带来更大的灵活编程空间。

  • 代码区:存放函数体的二进制代码,由操作系统进行管理
  • 全局区:存放全局变量、静态变量以及常量
  • 栈区:由编译器自动分配释放,存放函数的参数值、局部变量等
查看更多

vi使用教程

一、关于vi

vi是最强大的文本编辑器,没有之一。

尽管vi已经是古董级的软件,但还是有无数新人迎着困难去学习使用,可见其经典与受欢迎的程度。

无论是小说中还是电视剧,真正强大的武器都不容易驾驭,需要付出一些努力才能收获到更加强大的力量,对于vi这种上古神器来说更是如此。

由于它全程使用键盘操作,很多首次接触 vi的人会觉得不习惯而中途放弃。然而,坚持下来的朋友就会渐渐地发现这种键盘操作的设计绝妙,经典之所以能成为经典,必然有它的道理,不用解释太多。

观察一个程序员对vi的熟练程度,可以判断它的技术水平,如果他对vi不熟悉,就肯定不是Linux平台下的程序员,说vi不好用的人也肯定不熟悉vi和Linux,没有例外。

查看更多

10.使用控制流

10.使用控制流

使用控制流 (Linux 环境下正常)


本章前面的示例中,已经使用过 if-else-endif 。

CMake还提供了创建循环的语言工具: foreach endforeach 和 while-endwhile 。两者都可以与 break 结合使用,以便尽早从循环中跳出。

本示例将展示如何使用 foreach ,来循环源文件列表。我们将应用这样的循环,在引入新目标的前提下,来为一组源文件进行优化降级。

具体实施


查看更多

9.为语言设定标准

9.为语言设定标准

设置编译器选项


编程语言有不同的标准,即提供改进的语言版本。启用新标准是通过设置适当的编译器标志来实现的。
前面的示例中,我们已经展示了如何为每个目标或全局进行配置。

3.1版本中,CMake引入了一个独立于平台和编译器的机制,用于为 C++ 和 C 设置语言标准:为目标设置_STANDARD 属性。

具体实施


查看更多

8.设置编译器选项

8.设置编译器选项

设置编译器选项


前面的示例展示了如何探测 CMake,从而获得关于编译器的信息,以及如何切换项目中的编译器。后一个任务是控制项目的编译器标志。CMake为调整或扩展编译器标志提供了很大的灵活性,您可以选择下面两种方法:
CMake 将编译选项视为目标属性。因此,可以根据每个目标设置编译选项,而不需要覆盖 CMake 默认值。
可以使用 -D CLI 标志直接修改 CMAKE__FLAGS_变量。这将影响项目中的所有目标,并覆盖或扩展 CMake 默认值。

具体实施


  1. 设置CMake的最低版本:

查看更多

7.切换构建类型

7.切换构建类型

切换构建类型


CMake可以配置构建类型,例如:Debug、Release等。配置时,可以为Debug或Release构建设置相关的选项或属性,
例如:编译器和链接器标志。控制生成构建系统使用的配置变量是CMAKE_BUILD_TYPE。该变量默认为空,CMake识别的值为:
Debug: 用于在没有优化的情况下,使用带有调试符号构建库或可执行文件。
Release: 用于构建的优化的库或可执行文件,不包含调试符号。
RelWithDebInfo:用于构建较少的优化库或可执行文件,包含调试符号。
MinSizeRel: 用于不增加目标代码大小的优化方式,来构建库或可执行文件。

具体实施


查看更多