C ++中的类a()和类a = class()有什么区别?

时间:2018-01-15 03:46:46

标签: c++ class initialization

来自Java和C#世界,我总是喜欢使用

someclass a = someclass();

而不是

someclass a();

在C ++中初始化一个类变量。但是,我的编译器有时会抱怨

Error C2280: Attempting to reference a deleted function

它们之间有什么区别吗?哪一个更好?

2 个答案:

答案 0 :(得分:7)

  

它们之间有什么区别吗?

一个大问题:someclass a(); is declaring a function!

C++17's copy ellision之前,someclass a = someclass();要求类可以移动,这可能不是这里的错误Attempting to reference a deleted function

  

哪一个更好?

无。改为使用:

someclass a;

someclass a{}; // C++11

两者都会致电default constructor

答案 1 :(得分:-2)

C ++用户中的亲爱的朋友按如下方式创建对象

steps

classname objectname;

#include<iostream>
using namespace std;

class demo
{
   public:
      void print()
         {
           cout<<"Demo class";
         }
 };
int main()
   {

      demo d;
      d.print();
      return 0;
   }

OUTPUT 演示课

使用指针对象

#include<iostream>
using namespace std;
class demo
{
   public:
      void print()
         {
           cout<<"Demo class using pointer object";
         }
 };

int main()
   {

      demo *d = new demo();
      d->print();
      return 0;
   }

OUTPUT 使用指针对象的演示类

在java中,垃圾收集是自动完成的。我希望你理解概念。