cpp要点

1. include和前置声明

  • 前置声明告诉编译器有这个类的存在。当定义的类A依赖于类B,且类A中只用到类B的指针、或者类B出现在形参与返回值类型中,则只需要前置声明即可。虽然include肯定也可以,但是会减慢编译的速度。例如:
class Parent;
class Child {
private:
    Parent* m_parent;   
};
  • include告诉编译器整个类的属性和方法。当定义的类A依赖于类B,且类A中用到类B的属性或者方法,则需要include。在很多时候,只有在具体实现中才涉及属性或方法,它应该在.cpp文件中而不该在.h头文件里。

2. 析构函数

系统默认的析构函数:

  • 调用该类的析构函数
  • 调用父类的析构函数

3. 类设计的三个原则

当有需要自己管理的资源(new)时,就要:
1. allocate & deallocate: 在构造函数中如果有new的资源,注意要在析构函数中手动delete释放。
2. copy constructor:如果这个类是可以拷贝的,要重写拷贝构造函数。
3. copy assignment: 还要重载=。

4. 右值与左值

  • 通常等号左边,有名字、有类型的值是左值。等号右边,无名字、有值是右值。
  • 左值可以取到地址。右值取不到地址。
  • cpp11引入右值引用的概念,使得下面的写法正确:
int & le = 2;  // False
int && re = 2;  // True

有了右值引用,就可以有如下的复制构造函数的重载形式:

class RuleOfFive {
public:
    RuleOfFive (const RuleOfFive & rhs) {}  // 1
    RuleOfFive (RuleOfFive && rhs) {}  // 2
};

    RuleOfFive b;
    RuleOfFive e = b;  // 调用1
    RuleOfFive d = std::move(b);  // move()把左值变为右值,调用2

5. VS注释快捷键

  • 注释:先选中你要注释的代码行,按Ctrl+k再按Ctrl+c
  • 取消注释:按Ctrl+k再按Ctrl+u
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值