C++关键字

alignas & alignof

alignas声明结构体对齐的字节数

glignas返回结构体对齐的字节数(默认的是结构体内部最长的)

truct Foo  
{             
    int i;  
    float f;
    char c;
};            
//alignof(Foo) == 4
              
struct Empty {}; 
//alignof(Empty) == 1
              
struct alignas(64) Empty64 {}; 
//alignof(Empty64) == 64
              
struct alignas(1) Double {
    double d;                                                                                      
};            
//alignof(double) == 8
              
struct Obj {
    char a;
    int b;  
};            
//sizeof(Obj) == 8
//alignof(Obj) == 4
              
//alignof(char) == 1
//alignof(int*) == 8(64) 4(32)

constexpr

https://blog.csdn.net/qq_22274565/article/details/78719951

decltype

decltype与auto关键字一样,用于进行编译时类型推导,不过它与auto还是有一些区别的。decltype的类型推导并不是像auto一样是从变量声明的初始化表达式获得变量的类型,而是总是以一个普通表达式作为参数,返回该表达式的类型,而且decltype并不会对表达式进行求值。

推导出表达式类型

    int i = 4;
    decltype(i) a; //推导结果为int。a的类型为int。

与using/typedef合用,用于定义类型。

    using size_t = decltype(sizeof(0));//sizeof(a)的返回值为size_t类型
    using ptrdiff_t = decltype((int*)0 - (int*)0);
    using nullptr_t = decltype(nullptr);
    vector<int >vec;
    typedef decltype(vec.begin()) vectype;
    for (vectype i = vec.begin; i != vec.end(); i++)
    {
        //...
    }

这样和auto一样,也提高了代码的可读性。

重用匿名类型

在C++中,我们有时候会遇上一些匿名类型,如:

struct 
{
    int d ;
    doubel b;
}anon_s;

而借助decltype,我们可以重新使用这个匿名的结构体:

decltype(anon_s) as ;//定义了一个上面匿名的结构体

泛型编程中结合auto,用于追踪函数的返回值类型

这也是decltype最大的用途了。

template <typename _Tx, typename _Ty>
auto multiply(_Tx x, _Ty y)->decltype(_Tx*_Ty)
{
    return x*y;
}

const_cast

dynamic_cast

enum

c++11中新版enum与class连用

引用时需要加前缀,原本的enum不受命名空间的影响。

如:

enum class color{ Red, Green, Blue};
int main() { 
    
    color r = color::Blue;
    switch (r) {
    case color::Blue:
        std::cout << "Blue\n";
    case color::Red:
        std::cout << "Red\n";
    case color::Green:
        std::cout << "Green\n";
    
    }
}

explicit

extern

https://www.cnblogs.com/broglie/p/5524932.html

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值