目标很简单,在学习iOS开发之后,因工程需要,现在急需学习C++,所以我罗列了4本关于C++的好书,需要加速读完。

这四本书分别是:《Essential C++》、《Effective C++》、《More Effective C++》、《Effective Modern C++》。

本书的笔记是在看 《Essential C++》产生的。

思考记录

  1. 学习新语言时,要先设定好目标,再去学,扩散思考和动力都会很强。

比如我当下(2023年09月09日17:38:48)需要学C++应用在工作中,那我就会想使用C++会不会遇到之前猜的各种OC坑,比如字符串比较等等。

我的问题

待解决问题

(三)开发aff过程中打日志是怎么打的? 有不同环境打日志的说法吗?

❎Mark。

推荐书籍:

C++大专题

《研究C++的专题》:
C++虚函数的实现基本原理 https://jacktang816.github.io/post/virtualfunction/

《进程、线程问题》

C++ 编程技巧与规范

课程链接:
https://www.bilibili.com/video/BV1Qk4y1y7EU/?p=2&vd_source=47eb96d66d1c45d4c69fab977a6eda6e

部分笔记:

一、类和对象

(一)静态对象的探讨与全局对象的构造顺序

1. 静态对象的探讨

1.1 类中的静态成员变量

public B {
public:
    static A m_sa; // 静态成员变量的声明


    A B::m_sa; // 定义
}

(1)↑ 类中的静态类型成员变量,即使没有被使用,也会被构造和析构。

class B {
public:
    ineline static A m_sa; // 既声明又定义。
}

(2)↑ C++ 17 中,inline 声明又定义静态变量

(3)如果m_sa这个静态成员变量不是类类型,而是简单类型(比如int、double),如果源码中没有用到这个静态成员变量,编译器很可能不为这个静态成员变量分配内存。

眼下m_sa是类类型的静态成员变量,那么不管源码中是否用到,编译器都为会其分配内存。

1.2 函数中的静态对象

(1)如果函数没被调用过,那么这个静态对象就不会被构造。即使这个函数被调用多次,该静态对象也找机会被构造一次。

(二)方法的调用方式

C++中调研函数的方式:: 、 -> 和 . 有什么区别?

在C++中,.、-> 和 :: 是用于调用成员函数或访问成员变量的运算符。它们的用法和区别如下:

. 运算符:用于访问类或结构体的成员函数或成员变量。当你有一个类或结构体的对象(或引用)时,可以使用.运算符来调用成员函数或访问成员变量。例如:

class MyClass {
public:
    int x;
    void myFunction() {}
};

MyClass obj;
obj.x = 10; // 访问成员变量
obj.myFunction(); // 调用成员函数

-> 运算符:用于通过指针访问类或结构体的成员函数或成员变量。当你有一个指向类或结构体的指针时,可以使用->运算符来调用成员函数或访问成员变量。例如:

MyClass* pObj = new MyClass;
pObj->x = 20; // 访问成员变量
pObj->myFunction(); // 调用成员函数
delete pObj;    

:: 运算符:用于访问类或命名空间中的静态成员函数或静态成员变量。当你需要访问一个类或命名空间中的静态成员时,可以使用::运算符。例如:

class MyClass {
public:
    static int y;
    static void myStaticFunction() {}
};

int MyClass::y = 30; // 定义静态成员变量
MyClass::myStaticFunction(); // 调用静态成员函数