class my_class
{
...
my_class(my_class const &) = delete;
...
};
Run Code Online (Sandbox Code Playgroud)
= delete在这种情况下意味着什么?
还有其他"修饰符"(除了= 0和= delete)吗?
我最初发布这个只是关于析构函数的问题,但现在我正在添加对默认构造函数的考虑.这是原始问题:
如果我想给我的类一个虚拟的析构函数,但是与编译器生成的析构函数相同,我可以使用
=default:Run Code Online (Sandbox Code Playgroud)class Widget { public: virtual ~Widget() = default; };但似乎我可以通过使用空定义减少输入来获得相同的效果:
Run Code Online (Sandbox Code Playgroud)class Widget { public: virtual ~Widget() {} };这两种定义的行为方式有何不同?
根据此问题的回复,默认构造函数的情况似乎相似.鉴于析构函数的" =default"和" {}"之间的含义几乎没有差异,默认构造函数的这些选项之间的含义几乎没有差别吗?也就是说,假设我想创建一个类型,其中该类型的对象将被创建和销毁,为什么我要说
Widget() = default;
Run Code Online (Sandbox Code Playgroud)
代替
Widget() {}
Run Code Online (Sandbox Code Playgroud)
?
如果在原始帖子违反某些SO规则后延长此问题,我深表歉意.为默认构造函数发布一个几乎完全相同的问题让我觉得不太理想.
c++ user-defined-functions default-constructor deleted-functions c++11
我带着一段我不理解的代码的类声明:
class Weapon
{
public:
virtual void attack() const = 0;
};
Run Code Online (Sandbox Code Playgroud)
这const = 0部分是什么意思?
这是我的代码:
#include <iostream>
using namespace std;
class Base
{
public:
virtual void Sub1() = 0;
virtual void Sub2();
virtual void Sub3();
void Sub4();
};
class A : public Base
{
public:
void Sub2();
void Sub4();
};
class B : public A
{
public:
virtual void Sub1();
void Sub2();
};
class C : public Base
{
public:
virtual void Sub1();
virtual void Sub4();
};
void Base::Sub2()
{
cout << "Hello from Base::Sub2()" << endl;
}
void Base::Sub3()
{
cout << "Hello …Run Code Online (Sandbox Code Playgroud)