
C++基础
在?升龙拳!
这个作者很懒,什么都没留下…
展开
-
C++基础:模板与嵌套依赖类
#include <vector>#include <list>#include <iostream>using namespace std;template<typename Type = vector<int>> // 默认类型设定为vectorclass MyClass {private: Type m_data;public: MyClass(Type &data) : m_data(data).原创 2021-06-18 11:14:44 · 199 阅读 · 0 评论 -
C++基础:内存一致性和多线程的关系
转载于知乎问题:https://www.zhihu.com/question/24301047其实多线程间代码本来就是各自执行各自的,这个和memory order是两个概念,memory order是针对单线程重排序规则的概念,概念本身可以不讲多线程。多线程只是利用了memory order的规则加内存一致性来做线程同步而已。因为概念混乱,1,2,3,4都不太对的感觉。第一点,relaxed,线程内不保证所有原子操作是顺序进行的,而是如其字面意思在不影响逻辑的条件下最大限度的重排序(relax原创 2021-02-26 21:58:36 · 347 阅读 · 0 评论 -
C++编程实践:线程安全的单例模式
https://preshing.com/20130930/double-checked-locking-is-fixed-in-cpp11/http://www.voidcn.com/article/p-zdgudqdp-xt.html#include <iostream>#include <mutex>#include <atomic>#include <thread>class Singleton {private: ..原创 2021-02-23 17:40:18 · 137 阅读 · 1 评论 -
C++基础:std::enable_shared_from_this的作用
使用share_ptr管理自定义类型存在的问题#include <memory>#include <iostream>class B{public: void func() { // 1.使用this裸指针进行共享指针的初始化 std::shared_ptr<B> local_sp_b(this); // 2.local_sp_b限定在作用域内,计数为1 std::cout <.原创 2021-02-21 21:45:42 · 374 阅读 · 0 评论 -
C++基础: shared_ptr<T>::reset 自定义删除器函数
class Base{public: ~Base() { std::cout << __FUNCTION__ << std::endl; } void Test(std::string name, int id) { std::shared_ptr<Base> sp(new Base()); // 1.reset函数的第二个参数需要为仅有一个Base指针参数的方法 // 2..原创 2021-02-21 19:24:59 · 765 阅读 · 0 评论 -
C++基础:weak_ptr初始化
#include <memory>#include <iostream>int main(){ // 1.shared_ptr直接赋值 std::shared_ptr<int> sp0(new int(10)); std::weak_ptr<int> wp1 = sp0; // 2.make_shared std::weak_ptr<int> wp2 = std::make_shared&l.原创 2021-02-20 23:54:53 · 798 阅读 · 0 评论 -
C++基础:右值引用的汇编分析
https://www.cnblogs.com/likaiming/p/9045642.html原创 2021-02-04 20:32:29 · 249 阅读 · 0 评论 -
C++基础:智能指针share_ptr的初始化
// queue::front#include <memory>#include <iostream>int main (){ std::shared_ptr<int> sp1{new int(10)}; std::shared_ptr<int> sp2(new int(10)); std::shared_ptr<int> sp3 = std::make_shared<int>(10); std.原创 2021-02-20 17:11:38 · 632 阅读 · 0 评论 -
C++基础:伪共享(false sharing)
https://www.cnblogs.com/tong-yuan/p/FalseSharing.html原创 2021-02-20 17:06:50 · 765 阅读 · 0 评论 -
C++基础:shared_ptr 创建时即捕获析构
#include <iostream>using namespace std;class base{public: base(){cout << "base construct" << endl;} virtual void print(){cout << "base print" << endl;} ~base(){cout << "base destruct" << endl;}};.原创 2021-02-20 15:02:33 · 339 阅读 · 0 评论 -
C++基础:share_ptr与bind配合使用的引用计数陷阱
#include <iostream>#include <functional>class Foo {public: int doit() { return 10; }};int main() { std::shared_ptr<Foo> pFoo(new Foo); std::cout << pFoo.use_count() << std::endl; ...原创 2021-02-19 01:10:35 · 337 阅读 · 0 评论 -
C++基础:委托构造函数
class MyClass {private: int m_data1; int m_data2; int m_data3; int m_data4; int m_data5;public: // 声明构造函数0 MyClass(); // 构造函数1 委托 构造函数2 进行构造 MyClass(int d1, int d2, int d3) : MyClass(d1, d2, d3, 0){} // 构造函数2 .原创 2021-01-26 22:44:18 · 106 阅读 · 0 评论 -
C++基础:类的默认特殊成员函数
C++ 中类的特殊成员函数(Special member functions)是指,在某些特定情况下,即使程序员没有定义,编译器也会定义的函数包括:默认构造函数(Default constructor)拷贝构造函数(Copy constructor)移动构造函数(Move Constrcutor)拷贝分配操作符重载(Copy assignment operator)移动分配操作符重载(Move assignment operator)析构函数(Destructor)...原创 2021-01-26 14:47:49 · 299 阅读 · 4 评论 -
C++基础:构造函数,拷贝构造函数和赋值运算符重载
#include <iostream>class test_class {private:public: int m_data; // 重新定义构造函数 test_class() {}; // 重载构造函数: 使用了类型的常引用类型作为参数,这种构造函数又叫做拷贝构造函数 test_class(test_class const&) { std::cout << "拷贝构造函数" << std::.原创 2021-01-17 18:31:55 · 74 阅读 · 0 评论 -
C++基础:迭代器理解
#include <iostream>#include <utility>#include <map>#include <string>#include <vector>int main() { std::map<std::string, int> test; test.insert(std::pair<std::string, int>("myname", 12)); // 理解为.原创 2021-01-16 00:21:08 · 108 阅读 · 0 评论 -
C++基础:初始化列表
基本写法class CMyClass { CMyClass(int x, int y); int m_x; int m_y;};CMyClass::CMyClass(int x, int y) : m_y(y), m_x(m_y) {};构造函数参数存在class定义的类型时,使用初始化列表会少一次构造调用#include <iostream>using namespace std;class Hand {public: ...原创 2021-01-14 00:11:50 · 102 阅读 · 0 评论