- std::condition_variable::wait(unique_lock<mutex>& lck, Predicate pred)相当于
while (!pred()) wait(lck);
当wait返回时,pred也要同时为true,不然会继续wait;如果pred刚开始就为true,那就不会进入wait
- 声明了__attribute__((constructor))的函数会在main之前被调用,相当于是隐藏的、被动的程序入口
void TestAttributeConstruct() __attribute__((constructor));
void TestAttributeConstruct()
{
printf("TestAttributeConstruct\n");
} -
class A: public virtual B, public virtual C{ }
public virtual继承的使用场景是,B和C都继承自D,D中的成员变量间接被A继续。当使用这些成员变量时,会出现命名冲突,不确定是使用B还是C继承的,加上public virtual之后,就只会保留一份
- static_assert(std::is_base_of(A,B)::value,"B is not derived from A,compile fail"); 编译时判断B是否是A的派生类,若不是,则停止编译并输出预设的错误信息
- class A : public std::enable_shared_from_this<A>的作用是,A会继承一个shared_from_this的成员函数,该函数会返回A所在的智能指针。这样在A的其他成员函数内部时,就可以获取自身的智能指针,而不会只能使用this原始指针