为什么这个C++程序使用构造函数和析构函数显示错误?

car*_*bir 1 c++ constructor destructor

以下程序显示错误:

#include<conio.h>
#include<iostream.h>
int count = 0;
class alpha
   {
   public:

   alpha()
         {
         count++;
         cout<<"\n Number of objects created "<<count; 
         }
  ~alpha()
         {
         cout<<"\n Number of object destroyed"<<count;
         count--;
         }
  };

int main
{
    cout<<" inside main ";
    alpha a1, a2, a3, a4;
    {
        cout<<"\n Block 1 ";
        alpha A5;
    }
    {
        cout<<"\n Block 2 ";
        alpha a6;
    }
    cout<<" main again ";
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

第11行:错误:由于-Wfatal-errors,对'count'的引用是模糊的编译终止.

Arm*_*yan 9

<iostream.h>标准C++中没有标头.使用<iostream>名称std空间中具有名称的标头,因此不会使用名称来污染全局名称空间count.不要忘了使用std::cin,std::cout等等.从现在开始.

如果您的编译器无法识别<iostream>,请将其丢弃并获取新的编译器.例如,Visual Studio Express免费且易于使用,但目前并非符合标准,但对您来说这不应该是一个大问题.


Set*_*gie 5

您的代码有几个问题:

  1. 你不需要 conio.h
  2. 没有这样的标题iostream.h,只是iostream
  3. 你错过了()这个词main
  4. 当你不在你正在使用的命名空间中时cout,你正在使用endl等等.

修复所有错误后,您会得到以下内容:

#include<iostream>

using namespace std;

int count = 0;

class alpha
   {
public:
alpha()
       {
       count++;
       cout<<"\n Number of objects created "<<count; 
       }
~alpha()
       {
       cout<<"\n Number of object destroyed"<<count;
       count--;
       }
};

int main()
    {
    cout<<" inside main ";
    alpha a1, a2, a3, a4;
        {
        cout<<"\n Block 1 ";
        alpha A5;
        }
        {
        cout<<"\n Block 2 ";
        alpha a6;
        }
    cout<<" main again ";
    return 0;
}
Run Code Online (Sandbox Code Playgroud)