C++中的对象声明

Enk*_*pta 0 c++ constructor object

关于c ++中的以下代码,我有两个问题.

  1. 这条线A obj()main()意思是什么?它没有给出任何错误.

  2. 为什么下一行obj.fun();会出现以下错误?

    请求'obj'中的成员'fun',这是非类型'A()'

代码是:

#include<iostream>
using namespace std;

class A{
    public:
        A(){
            cout<<"Constuctor called\n";
        }
        ~A(){
            cout<<"Destuctor called\n";
        }
        void fun(){
            cout<<"YES";
        }
};

int main(){
    A obj();
    obj.fun();
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

Som*_*ude 8

这是一个非常棘手的问题,但你实际上声明obj为一个函数,它不接受任何参数并返回一个实例A.

改成

A obj;
Run Code Online (Sandbox Code Playgroud)

如果您有一个支持C++ 11的编译器(现在大多数情况下,除非您运行旧版本,但有些需要特殊标志才能启用它),那么您也可以

A obj{};
Run Code Online (Sandbox Code Playgroud)

  • 这意味着,将任何对象声明为函数对整个程序没有用处? (3认同)