自用c++注意事项文档

0 前言

1 类相关

  • 不要在类的构造函数中进行针对于数据除初始化外的操作,可单列一个Initialize()函数。
  • 在类中开辟动态地址空间时(new)需要进行delete,不要忘记写拷贝构造函数与重载=运算符。
  • 写了构造函数带参数的还记得写一个默认的无参数构造函数,以便之后new该类的一个数组时候使用,仅有有默认构造函数的类可以new对象数组。
  • 在类的函数中返回局部变量的对象时,不能使用引用操作&,只能返回该对象,因其引用没有办法被复制。其传递过程跟外面的接收过程是相关的:
    1.声明一个变量来接受函数返回的局部变量时,函数返回的对象并没有被析构,直接就给到了声明的接收变量上。没有调用拷贝构造或者重载操作符等。
    2.用另一个创建好了的对象来接收,会根据复制拷贝或者移动复制函数规则来进行。当有重载操作符=时会调用该操作。
  • 不要在类的声明中进行赋初值,应该在构造函数的内容里赋初值。在c++11中可以编译运行,但在c98中编译都无法通过。
  • 单一参数的构造函数在以下的情况下可能会被隐式地调用:1. ClassA a=1 作为等号的初始化;2. 作为函数的参数 func(ClassA a)3.作为函数的返回值 ClassA func();如拷贝构造函数。因此可以使用关键字explicit修改构造函数防止被隐式地误用。
  • 类中的静态成员变量必须在类外进行初始化的定义,否则编译不会报错,链接时会报未定义变量的错误。 如int SigHandler::PipeQueueSize = 0;

2 Socket

  • 在socket客户端和服务器都不要图省事,仅仅完成发送的代码不管接受;这样很容易导致没清缓冲区导致另一端无法发送数据而阻塞。

n 项目相关

  • 查看项目的代码量:
    (1)包括空行(会列出每个文件的代码行数):
    find . “(” -name “.m" -or -name ".mm” -or -name “.c" -or -name ".h” -or -name “.xib" -or -name ".pch” “)” -print | xargs wc -l
    (2)不包括空行(只会出现总行数):
    find . “(” -name “.m" -or -name ".mm” -or -name “.c" -or -name ".h” -or -name “.xib" -or -name ".pch” “)” -print | xargs grep -v “^$”|wc -l
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值