gpt4 book ai didi

处理众所周知错误的 C++ 代码分析工具

转载 作者:行者123 更新时间:2023-11-30 02:05:42 28 4
gpt4 key购买 nike

<分区>

目前我经常使用 C++ 进行编程。有时我会被 C++ 语言的特定问题绊倒。通常很难一方面处理应用程序域以编程方式解决特定问题,另一方面处理 C++ 问题。

一个例子:

class Animal {

public:
Animal ();
Animal (const char* name);
virtual ~Animal();

const char* getName() const;

private:
char* _name;

};

在这个类中,我有一个指针作为成员。所以我会在构造函数中动态创建,在析构函数中删除。

问题是,如果我自己不指定 Copy-Constructor,生成的 Copy-Constructor 只会将指针自身复制到新的 Copy-Object。这意味着这些对象的一个​​指针所指向的数据的任何更改都将可用于每个复制的对象。所以我必须自己定义一个Copy-Constructor赋值运算符来复制指针指向的值。

Animal::Animal(const Animal& other)
{
if(_name) {
delete [] _name;
}
_name = new char[strlen(other.getName()) + 1];
strcpy(_name,other.getName());
}

另一个 C++ 特定问题:
如果我不使 Descructor virtual 如果我在父类(super class)型上使用 delete 则不会调用子类的析构函数。

C++ 中有很多东西,经常会产生很多难以发现的问题。

是否有任何代码分析工具可以搜索此类问题并显示一些提示,这些提示可能在某一点上出错?

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com