C++进阶 : C++的冷知识小结(持续更新)

本文介绍了C++编程的一些关键概念,如内联函数、对象数组初始化、枚举、派生类与基类之间的操作、整型提升、异常处理、const成员函数、引用类型、虚函数、函数模板、函数重载以及成员函数引用类型等。通过实例展示了如何使用这些特性,并强调了在编程实践中应注意的事项。
  • new失败不会返回空指针,只会抛出异常,唯一可以使其返回空指针的方法是在new后面加上(std::nothrow),例如:
    int* p = new (std::nothrow) int;
  • noexcept声明只是告诉编译器这个函数不会抛出异常,无需对其做异常方面的处理,从而提升效率,但实际是否抛出异常,由开发者自己决定,如果声明了noexcept,结果却抛出了异常,编译器将对其不做处理,程序将直接退出
  • 类成员的const类型的引用变量只能在类的初始化列表内进行初始化,static成员变量只能在类外进行初始化,而static const的类型的成员变量则可以在类内进行初始化
  • 不可以对类成员函数同时使用static及const(前缀修饰)进行修饰,因为C++编译器在实现const函数时,为了确保该函数不会修改对象的成员,会传入一个隐式的参数:const this *,但static函数是没有this指针的,也就是说static与const是冲突的。
  • 哪些函数不能成为虚函数:(1)全局普通函数 (2)友元函数 (3)构造函数 (4)内联成员函数 (5)静态成员函数
  • 虚函数不可以是内联的,因为内联函数是在编译时决定的,但是虚函数时运行时决定的,即使强行在虚函数前加上inline关键字,但仍然会被忽略
  • 函数加上const修饰和不加const修饰,其实是两个函数,所以在父类中某虚函数加上const,但是同名同参的子类成员函数没有加上const,不会被重写
  • 字符串的前缀u、U、L、R分别代表char16_t、char32_t、wchar_t以及原始字符串
  • 对一个空指针进行delete或free操作将什么也不做,是安全的
  • 类成员函数的右边放一个&代表左值引用函数,说明这个接口只能被左值调用,但是不能被右值使用。成员函数的右边放&&代表右值引用函数,说明这个接口只能被右值调用。
class Test {
public:
    // 左值引用限定成员函数 - 只能在左值对象上调用
    void func1() & {}
    
    // 右值引用限定成员函数 - 只能在右值对象上调用
    void func2() && {}
};
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Chiang木

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值