- 博客(8)
- 收藏
- 关注
原创 用户态线程和内核态线程的区别
一般我们在运行用户程序时,执行的都是用户态线程,当需要系统调用时(I/O操作),则会靠内核从用户态进行上下文切换到内核态,而不是切换到内核态线程。
2024-09-11 15:39:49 300
原创 在C++中,= 执行的拷贝初始化
myclass mc_new(mc_old); 和 myclass mc_new = mc_old; 是否都调用了拷贝构造函数?
2024-08-31 18:00:25 167
原创 拷贝构造函数、移动构造函数,深拷贝和浅拷贝的关系
深拷贝是原始对象的值和拷贝对象的值是不同内存(如两个指针指向不同的地址) 浅拷贝是原始对象的值和拷贝对象的值是同内存(如两个指针指向同个地址) 拷贝构造函数的参数是常量引用,在赋值时必须采用深拷贝。所以在赋值时,必须是用原始对象的变量值作为参考值来分配一块新内存,然后将该内存分配给拷贝对象的变量。如下两个例子: myClass(const myClass& src): ptr( new int(*src.ptr) ){ } myClass(const myClass& src):
2024-08-14 22:45:57 207
原创 父类的析构函数要定义为虚函数
还有一个特殊情况:如果要将一个指向子类的父类指针通过dynamic_cast转换为子类指针时,必须让父类的析构函数设置为虚函数,因为在删除子类指针时删除子类部分后,无法调用父类析构函数也会导致父类部分无法删除会导致泄露。析构:在C++的RTTI机制控制下,运行时系统会根据该父类指针的实际类型,在delete该父类对象时,会先调用子类的析构函数(如果适用),然后再调用父类的析构函数。构造:该父类指针指向的子类对象在构造时先调用父类的构造函数,再调用子类的构造函数。那么在父类的类定义中,我们必须将自己的。
2024-08-14 17:23:14 226
原创 求解最少翻译问题C++(赋步骤解释)
据美国动物分类学家欧内斯特-迈尔推算,世界上有超过100万种动物,各种动物有自己的语言。假设动物A可以与动物B通信,但它不能与动物C通信,动物C只能与动物B通信,所以,动物A、C之间通信需要动物B来当翻译。问两个动物之间项目通信至少需要多少个翻译。
2023-05-06 12:23:11 740 1
原创 回溯法:(完整代码)有一个递增有序整数序列,其中元素可能重复出现,求其所有的子集
回溯:有一个递增有序整数序列,其中元素可能重复出现,求其所有的子集,例如 s={1,2,2},输出结果是“{},{1},{1,2},{1,2,2},{2},{2,2}”(顺序不重要)。
2023-04-12 19:19:26 160
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人