目标很简单,在学习iOS开发之后,因工程需要,现在急需学习C++,所以我罗列了4本关于C++的好书,需要加速读完。
这四本书分别是:《Essential C++》、《Effective C++》、《More Effective C++》、《Effective Modern C++》。
本书的笔记是在看 《Essential C++》产生的。
思考记录
- 学习新语言时,要先设定好目标,再去学,扩散思考和动力都会很强。
比如我当下(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(); // 调用静态成员函数