新手C++编程容易犯10种编程错误

公司每年都会有一定数量的人员流动,因此也会招聘一些应届毕业生来补充,指导应届毕业生已成为老员工的必修课程。在工作日,我们经常帮助新员工检查代码中的问题。在这个过程中,我们发现了一些编程错误,这些错误很容易由C++新手犯下。这里有一个简单的总结,为新人提供了一个参考。

1.一些关键词写在CPP文件中。对于C++C++类,只需在H中写一些关键词,就不需要在CPP中添加,例如virtualstatic等关键词。如果你在CPP中写得更多,编译器会报告错误。例如,只要在头部文件中声明以下虚拟接口和静态成员变量的定义。

classhape。

{

Draw()virtual;

//…

Levelstaticintne;

}

2.函数参数的默认值写入具有参数默认值的函数。函数声明中增加了默认值,并且不需要带来函数实现的参数。为了便于查看代码,在函数实现部分的参数中注释了默认值。正确的方法是,在第一个文件中有一个默认值:

BOOOLCreateConf(constCstring&strConfname、constBOOOLBAudio=FALSE);

不需要将默认值添加到函数实现的参数中:

BOOOLCreateConf(constCstring&strConfname,constBOOLBAudio/*=FALSE*/);

{

//…

}

3.在编写类时,在类的末尾忘记添加“;”分号在类的末尾忘记添加分号,编译会报告错误。新人可能已经很长时间没有发现编译错误的原因。事实上,这很简单。我忘了在类的末尾添加分号。

Shape,classs。

{

//…

};

4.只添加函数声明。当没有函数可以添加函数时,只有函数声明可以添加到类的主文件中,但在CPP中没有添加函数。如果该函数被调用到其他地方,则在编译链接时会报告unresolvedernalsymbol错误。由于无法实现,因此没有供应链。

5.当添加C++类时,我们通常会添加CPP文件和CPP源文件。因此,我们忘记在项目中添加CPP文件,也就是说,我们没有参与编译,也没有生成供链接使用的OBJ文件。如果有一个代码调用到C++类的接口,在编译链接时会报告Unresolvedexternaymbol错误,也就是说,无法链接到C++类对应的接口。

6.函数中的局部变量地址或引用的局部变量地址或引用的局部变量,该局部变量在函数结束时的生命周期结束,内存被释放。当变量的外部访问时,由于变量的内存已经被释放,因此内存访问异常。例如,错误的代码如下:

GetResult(char*)

{

[100]={charch100]={0};

//…

ReturnchResult;

}

7.忘记用C++多态虚函数调用父类中的界面,导致多态没有有效代码,并调用子类实现界面。因此,忘记在父类中声明相应的界面为Virtual,导致子类实现的函数没有调用。请务必记住,为了实现多态函数的调用,父类的相关界面必须声明为virtual。

Shape(classs)

{

//…

virtualvoidraw();

//…

}

8.使用双指针的地方使用单指针。有时我们需要调用一个接口来获取一些数据。在接口中,数据被复制到传输参数对应的内存中。此时,在设计参数时,它将被引入指针或引用。在调用Getdata之前,我们对结构体指针P进行了定义,并且new提供了相应的结构体对象内存。在定义Getdata接口时,我们应该使用双指针(指针指针)。结果错误地写成了一个指针。

有问题

© 版权声明
THE END
喜欢就支持以下吧
点赞6
分享
相关推荐
  • 暂无相关文章
  • 评论 抢沙发
    源码客的头像-源码客

    昵称

    取消
    昵称表情图片