C++基础知识

constexpr

constexpr是编译期就能确定的常量表达式,可用于常量的定义、函数的定义、构造函数的定义等。

  1. 用于常量的定义时,和const的使用一致,都表示只读变量
  2. 用于函数的定义时,需要满足如下4个条件:
  • 该函数必须有返回值,即函数的返回值类型不能是 void
  • 整个函数的函数体中,除了可以包含 using 指令、typedef 语句以及 static_assert 断言外,只能包含一条 return 返回语句
  • return 返回的表达式必须是常量表达式
  • 函数在使用之前,必须有对应的定义语句

=delete的使用

=delete来显式地禁止编译器自动生成某些函数
常见的应用主要在如下2类场景:

  1. 类的复制构造和类的赋值拷贝
class A{
public:
    A() = default;
    A(const A&) = delete;  // 禁止复制拷贝
    A& operator=(const A&) = delete;  // 禁止赋值
};
  1. 模板中
template<typename T>
void F(T t) = delete;

template<>
void F<int>(int i) {
    std::cout << "only for int " << i << std::endl;
}

禁止了F函数的模板的实例化,但是对F函数的int入参格式,进行了特例。

注意:delete的使用还需要注意如下几个方面:

  • 只能使用在类的成员函数中
  • 不能对重载的函数进行使用
  • 不在在子类中对父类中的纯虚函数进行使用

explict的使用

经常用于修饰类的构造函数,被修饰的构造函数的类,不可以在代码中使用原本由编译器提供的隐式转换,只能以显式的方式进行转换。

智能指针

todo

互斥锁

todo

线程池

todo

异常处理

todo

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值