C++核心编程(一)

C++核心编程

1. 内存分区模型

  • 代码区:存放函数的二进制代码,由操作系统进行管理
  • 全局区:存放全局变量和静态变量以及常量
  • 栈区:由编译器自动分配释放,存放函数的参数值,局部变量等
  • 堆区:由程序员分配和释放,若程序员不释放,程序结束由操作系统释放

2. 内联函数

在C++中,使用关键字 inline 可以将函数定义为内联函数。内联函数的特点是它们的定义必须在每个调用它们的源文件中可见,通常这意味着函数的定义通常会写在头文件(.h)中。

目的:在编译时将函数的代码嵌入到调用它们的地方,而不是像普通函数一样在链接时进行函数调用。因此,如果函数定义不在可见范围内,编译器无法将其内联到调用点。

在头文件中声明内联函数的原型(函数声明),并在同一头文件中定义函数的具体实现。

#构造函数可以直接赋初值,构造函数特性
complex (double r = 0, double i = 0) : re(r),im(i){}

1. 不带指针的构造函数多半不需要写析构函数 如果class里面带指针,就必须有拷贝构造和拷贝复制

2. 写在class里面的方法是内联函数(建议编译器内联,最后还是看编译器)

3. 数据一定要放在private里面,构造函数可以放在private里面,详情见后

以下的常成员函数在常量对象调用时起作用,若没加 const常量对象调用时会报错 ,所以该加const的地方一定要加

double real() const { return re; }  #常成员函数

  • 参数传递尽量用引用,返回也是

  • 同一个class的不同object之间互为友元(firend)

  • 临时对象 typename ()

  • 如果class里面带指针,就必须有拷贝构造和拷贝复制

C++核心编程(一)_第1张图片

​ 浅拷贝:只拷贝指针

b = a,如果使用编译器默认的函数,是浅拷贝,有可能导致内存泄漏

3. 拷贝构造函数

C++核心编程(一)_第2张图片

												深拷贝:复制内存

拷贝赋值函数:把左边拷贝的右边分三步:1. 先把右边清空,2. 重新分配右边跟左边一样大的内存,3. 拷贝

C++核心编程(一)_第3张图片

12

变量可以声明多次,但只能定义一次

extern int a;		#声明
extern int a = 0;   #定义

静态函数属于类,而不属于对象

模板类在编译时要把.h文件和.cpp文件都要添加

你可能感兴趣的:(C++,学习笔记,c++)