C++的一些注意点

关于构造函数之后的冒号:

构造函数后面跟冒号,就相当于:
系统创建成员变量并且初始化。也就是系统为成员变量分配了一块内存并且把相应的数据给填了进去。而构造函数里面调用等于号的方式是分配好后再进行赋值,多了一个步骤。

class Action {
public:
  Action() : file_act_(nullptr),
                  buf_act_(nullptr) {
  }
};

友元函数

解释是:类的友元函数是定义在类外部,但有权访问类的所有私有(private)成员和保护(protected)成员。尽管友元函数的原型有在类的定义中出现过,但是友元函数并不是成员函数。

亦即通过在类的声明里定义了一个友元函数,它再在外面实际定义时就可以直接访问内部私有变量。

关于C++11/14

C++11/14特性里面有很爽的几点,其中最大的特点就是加入了auto关键字,用于自动判断变量类型。还有就是对于循环所有变量,加入了如同python中in xxxx一样的特性:

  for (auto &&keyword : keywords) {
        //内部处理
  }

C++的这些特性,感觉真是一门时时更新的语言。

string::npos

string::npos作为string的成员函数的一个长度参数时,表示“直到字符串结束(until the end of the string)

new、delete 与指针

在C++中,操作符new 用于申请内存,操作符delete 用于释放内存。在C 语言中,函数malloc 用于申请内存,函数free 用于释放内 存。由于C++兼容C 语言,所以new、delete、malloc、free 都有可能一起使用。new 能比malloc 干更多的事,它可以申请对象的内存,而malloc 不能。C++和C 语言中的指针威猛无比,用错了会带来灾难。对于一个指针p,如果是用new申请的内存,则必须用delete 而不能用free 来释放。如果是用malloc 申请的内存,则必须用free 而不能用delete 来释放。在用delete 或用free 释放p 所指的内存后,应该马上显式地将p 置为NULL,以防下次使用p 时发生错误。示例程序如下:

void Test(void)  
{  
float *p;  
p = new float[100];  
if(p==NULL) return;  
…// do something  
delete p;  
p=NULL; // 良好的编程风格  
// 可以继续使用p  
p = new float[500];  
if(p==NULL) return;  
…// do something else  
delete p;  
p=NULL;  
} 
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • (JG-2014-08-20)(前半部分经过网上多篇文章对比整理)(后半部分根据ExceptionalCpp、C+...
    JasonGao阅读 5,631评论 2 23
  • 1. C++基础知识点 1.1 有符号类型和无符号类型 当我们赋给无符号类型一个超出它表示范围的值时,结果是初始值...
    Mr希灵阅读 18,043评论 3 82
  • 收集非原创文章,如遇原作者,请私聊我,我会表明出处! 1--10 1. C++中什么数据分配在栈或堆,静态存储区以...
    Juinjonn阅读 4,981评论 0 30
  • C语言中内存分配 在任何程序设计环境及语言中,内存管理都十分重要。在目前的计算机系统或嵌入式系统中,内存资源仍然是...
    一生信仰阅读 1,204评论 0 2
  • 1 文件结构 每个C++/C程序通常分为两个文件。一个文件用于保存程序的声明(declaration),称为头文件...
    Mr希灵阅读 2,909评论 0 13