21xrx.com
2024-11-08 23:20:51 Friday
登录
文章检索 我的文章 写文章
C++中的default和delete关键字
2023-07-11 17:09:56 深夜i     --     --
C++ default delete 函数删除

C++语言中的default和delete关键字在对象的构造和销毁过程中起着重要的作用。default关键字是一个特殊的构造函数,当我们没有自定义构造函数时,C++编译器会自动生成一个默认构造函数。而delete关键字则是用于防止某个函数被调用,同时也可以避免一些不必要的错误。

使用default关键字可以让编译器为我们生成一些默认的函数,让代码更加简洁。在下面的例子中,我们可以看到编译器默认生成了一个无参构造函数。


class Sample {

public:

 Sample() = default; // 编译器默认生成的无参构造函数

 Sample(int val) : m_val(val) {}

private:

 int m_val;

};

另一个有用的应用是在头文件中声明成员变量和函数,但是在源文件中定义。如果我们需要定义一个默认构造函数,但是又不想在头文件中实现,那么可以使用default关键字,在头文件声明这个默认构造函数,然后在源文件中定义。当我们使用这个类时,编译器会自动生成默认构造函数的代码。


// myClass.h

class MyClass {

public:

 MyClass() = default; // 头文件中声明默认构造函数

private:

 int m_val;

};

// myClass.cpp

#include "myClass.h"

MyClass::MyClass() // 源文件中定义默认构造函数

 : m_val(0) {}

除了default关键字,C++11还引入了delete关键字,用于明确指定某个函数不能被调用。下面的例子中,我们声明了两个构造函数,一个是带参数的构造函数,一个是无参构造函数。我们使用delete关键字告诉编译器,不能使用无参构造函数。


class MyType {

public:

 MyType(int x) : m_x(x) {} // 带参数构造函数

 MyType() = delete; // 禁用无参构造函数

private:

 int m_x;

};

使用delete关键字可以有效避免不必要的错误,比如防止用户使用错误的构造函数。此外,delete关键字还可以用于禁止默认的拷贝构造函数和赋值运算符,可以避免不可预见的问题。

在C++中,default和delete关键字是非常有用的语法糖,通过使用它们可以让我们的代码更加简洁、清晰、健壮。在实际编程中,我们需要根据情况灵活运用它们,使得我们的代码更加优秀。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复