指针自身为const表示不可对该指针进行赋值,而指向物为const则表示不可对其指向进行赋值。因此可以将引用看成是一个自身为const的指针,而const引用则是const Type * const指针。 指向为const的指针是不可以赋值给指向为非const的指针,const引用也不可以赋值给非const引用,但反过来就没有问题了,这也是为了保证const语义...
class Foo{intm_money;public:intget_money() const //✅{returnm_money;}intset_money(intmoney) const //❌{m_money = money; //修改了this->m_money;需去掉函数const修饰}}; 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. [3] 修饰引用:引用是C++才有的语法特征,引用是别...
constexpr与const一样,它可以应用于变量,不同的是可以应用于函数和类构造函数,constexpr指示值或返回值是常量,并且在可能的情况下,在编译时计算 修饰变量 const和constexpr之间的主要区别在于,const的初始化可以在到运行时,而constexpr编译时必须初始化 constexprfloatx=42.0;constexprfloaty{108};constexprfloatz=exp...
在C++11中constexpr是不能用于自定义类型的,例如: constexprstructMyType{inti;} constexpr MyType mt={0}; 将无法通过编译。正确的做法是,定义自定义常量构造函数: structMyType{constexprMyType(intx):i(x){}inti; }; constexpr MyType mt = {0}; 常量表达式的构造函数也有使用上的约束: 函数体必须为...
tuple |函数|操作| |: :|: :| |b.any() |b中是否存在置位| |b.all() |是否所有位都置位| |b.none() |是否不存在置位的位| |b.count() |位置的位数| |b.size()| constexpr 返回b中的位数| |b.test(pos) |检
协程不能使用可变参数、普通返回语句或占位符返回类型(auto或Concept)。Constexpr函数、构造函数、析构函数和主函数不能是协程。 Modules:直接看代码 // helloworld.cppexport module helloworld; // module declarationimport <iostream>; // import declaration export void hello() { // export declaration std::co...
- const修饰指针:分为修饰指针所指向的内容(左值)和修饰指针本身(右值),前者确保指针指向的内容不变,后者保证指针不可修改。- constexpr:在编译时即可计算的,可用于变量、函数和构造函数,确保值在编译时确定,有助于优化和类型安全。理解这些概念有助于编写更高效、类型安全的C/C++代码,特别是...
C++11引入了constexpr,这是一个比宏更安全、更强大的替代方案。constexpr可以用于变量、函数和类的构造函数,提供编译时计算的能力,同时保持类型安全和可调试性。 constexpr int Square(int num) {return num * num;} 在智能驾驶和中间件等高性能领域,使用constexpr替代宏可以提升代码的可读性和可维护性,同时保留...
1、const用法 C语言中使用const修饰变量,功能是对变量声明为只读特性,并保护变量值以防被修改。 修饰变量/数组 当用const修饰定义变量时,必须对变量进行初始化; const修饰变量可以起到节约空间的效果,通常编译器并不给普通const只读变量分配空间,而是将它们保存在符号列表中,无需读写内存操作,程序执行效率也会提高。
unique_ptr 中拷贝构造函数和赋值操作符都声明为delete或private。 优先使用 make_shared 和 make_unique 的原因是为了避免内存泄露。参考C++11 中的 Smart Pointer(shared_ptr/weak_ptr/unique_ptr) 总结 智能指针使用注意事项: 不使用相同的内置指针值初始化,或reset多个智能指针 ...