C++代码编程技术提升点

C++编程技术提升点:

1.*.h头文件中使用#pragma once代替(#ifndef,#define,#endif)
因为:当某个头文件被多次include时,只要在头文件的最开始加入#pragma once就能够保证头文件被编译一次,可加快编译速度;另外,#pragma once是编译相关,就是说这个编译系统上能用,但在其他编译系统不一定可以,也就是说移植性差,不过现在基本上每个编译器都有这个定义了。当然若某编译器没有这个定义,则使用#ifndef,#define,#endif这种方式。

2.智能指针:shared_ptr\weak_ptr\unique_ptr

3.左值引用和右值引用
左值引用和右值引用都是别名,左值引用是在类型后面加一个&,右值引用是在类型后面加两个&&。
左值引用和右值引用本质的作用都是减少拷贝。右值引用弥补了左值引用的不足。右值引用提高了传值返回的效率。
左值和右值是不好区分的,这里我们一般这样认为:
左值:一般是可以修改的值,可以取地址的,通常是变量。
右值:一般是常量(除const 修饰的),表达式或者函数的传值返回(生成临时变量)。
注意:传引用返回是右值。
C++11有对右值进行了严格的区分:
纯右值:比如常量,表达式值a+b
将亡值:比如函数传值返回,表达式的中间结果。顾名思义,将亡值的空间马上就要被释放了。
验证结果如下为啥true or false
#include
int main() {
int a=10;

int &a1 = a; // true
std::cout << &a1 << std::endl;

int &&a4 = 10; // true
std::cout << &a4 << std::endl;

auto &a5 = a; // true
std::cout << &a5 << std::endl;

auto &&a7 = a; // true
std::cout << &a7 << std::endl;
auto &&a8 = 10; // true
std::cout << &a8 << std::endl;

const int &a9 = a; // true
std::cout << &a9 << std::endl;
const int &a10 = 10; // true
std::cout << &a10 << std::endl;

const int &&a12 = 10; // true
std::cout << &a12 << std::endl;

const auto &a13 = a; // true
std::cout << &a13 << std::endl;
const auto &a14 = 10; // true
std::cout << &a14 << std::endl;

const auto &&a16 = 10; // true
std::cout << &a16 << std::endl;

// int &a2 = 10; // false
// std::cout << &a2 << std::endl;
// int &&a3 = a; // false
// std::cout << &a3 << std::endl;
// auto &a6 = 10; // false
// std::cout << &a6 << std::endl;
// const int &&a11 = a; // false
// std::cout << &a11 << std::endl;
// const auto &&a15 = a; // false
// std::cout << &a15 << std::endl;
return 0;
}

4.移动语义和完美转化

5.运算符重载

6.友元函数和友元类
使用friend关键字;声明为友元函数或友元类,可以访问类的私有成员和受保护成员;

#.待补充

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Sky静

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

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

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

打赏作者

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

抵扣说明:

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

余额充值