C++基础
文章平均质量分 55
小喻同学i
这个作者很懒,什么都没留下…
展开
-
std::function
比如一个模板的加法函数(比如多个类都调用此加法函数),可以实现对不同的数据类型的操作,如果对象也重载了加法,同样也可以使用。多态一般都很了解,可以通过父类型指针来管理子类型的指针,实现了对子对象类型的隐藏。但这种方式的缺点也非常明显,需要写继承的类而且数据类型的隐藏并不全面,至少父类型始终要暴露出来。所谓闭包,其实就是Lambda表达式,通过它和std::function的配合,实现类型的擦除。中,这个闭包对象在调用时,就无需传递参数了;即可,而无需再传递参数,这就实现了一种简单的类型擦除,将。原创 2024-05-14 17:14:23 · 372 阅读 · 0 评论 -
C++ 为什么不能在构造函数中调用虚函数
但是我们创建的是DeriveClass这个派生类,在创建派生类之前会首先调用基类的构造函数来创建基类的数据,如果此时进入了基类构造函数中,那么当前对象指向的虚函数表地址为基类的虚函数表,并非派生类的虚函数表,从上面的执行结果就可以看出,当初始化好基类的构造函数之后,回到派生类的构造函数中时,获取的虚函数表地址已经变为了派生类的虚函数表地址,已经非基类的虚函数表地址。这里记录一下为什么不能在构造函数中调用虚函数。在基类的构造函数中,调用了。原创 2024-04-11 21:43:55 · 291 阅读 · 0 评论 -
static 关键字与 const关键字
既可以通过类名调用静态成员函数,也可以通过类对象调用静态成员函数,因为静态成员函数只能访问静态成员变量,而静态成员变量是类中的变量,不是对象中的变量,这个类的所有对象共享同一份变量;非const对象,及可以调用const成员函数,也可以调用非const成员函数。const 对象只能调用const成员函数,不能调用非const成员函数;原创 2024-01-10 13:33:13 · 307 阅读 · 0 评论 -
C++ condition_variable
而条件变量同样是阻塞,还需要通知才能唤醒,线程被唤醒后,它将重新检查判断条件是否满足,如果还不满足,该线程就休眠了,应该仍阻塞在这里,等待条件满足后被唤醒,节省了线程不断运行浪费的资源。这种同步方式就是条件变量。两个线程操作同一临界区时,通过互斥锁保护,若A线程已经加锁,B线程再加锁时候会被阻塞,直到A释放锁,B再获得锁运行,线程B必须不停的主动获得锁、检查条件、释放锁、再获得锁、再检查、再释放,一直到满足运行的条件的时候才可以(而此过程中其他线程一直在等待该线程的结束),这种方式是比较消耗系统的资源的。原创 2023-10-16 15:46:36 · 84 阅读 · 0 评论 -
拷贝构造函数闲谈
拷贝构造函数原创 2022-08-09 22:54:23 · 90 阅读 · 0 评论