c++中,类 只能定义在主函数的前面吗?

时间:2022-03-22 18:29:44
能不能像函数那样,在主函数的后面定义,然后在使用前声明下再使用?
谢谢

6 个解决方案

#1


可以自己测试下,很快的事情啊。 c++中,类 只能定义在主函数的前面吗?

#2


引用 1 楼 alex_my 的回复:
可以自己测试下,很快的事情啊。 c++中,类 只能定义在主函数的前面吗?
测试了 不可以,不知道是不是写的不对,所以来问下,另外 不要用头文件的方法

#3


上测试代码。

#4


引用 3 楼 ForestDB 的回复:
上测试代码。
这还用得着测试代码
//这样可以
class lei
{
int x;
public:
int getx(){return x;}
}a;
int main()
{
cout<<a.getx();
}

//像函数那样不可以
class lei;
int main()
{
lei a;
cout<<a.getx();
}
class lei
{
int x;
public:
int getx(){return x;}
};

//这是函数
int hanshu(int a);
int main()
{
cout<<hanshu(2);
}
int hanshu(int a)
{
return a;
}

#5


前置声明,参考C++ Primer:

  我们也可以声明一个类但是井不定义它例如   
  
class   Screen;   //   Screen类的声明
   
  这个声明向程序引入了一个名字Screen   指示Screen   为一个类类型   
    
  但是我们只能以有限的方式使用已经被声明但还没有被定义的类类型,如果没有定义类,   
  那么我们就不能定义这类类型的对象。因为类类型的大小不知道,编译器不知道为这种类类型的   
  对象预留多少存储空间;   
  但是我们可以声明指向该类类型的指针或引用,允许指针和引用是因为它们都有固定的大小,这与   
  它们指向的对象的大小无关。但是因为该类的大小和类成员都是未知的,所以要等到完全定义了该类   
  我们才能将解引用操作符*   ,   应用在这样的指针上或者使用指针或引用来指向某一个类成员。   
    
  例如:   
  这里Screen   只有声明没有定义:   
  

  class   Screen;   //声明   
  class   StackScreen   {   
      Screen   *stack;     //ok:指向一个Screen对象   
  };
   

#6


类的定义肯定要出现在定义类对象的语句前吧。。

#1


可以自己测试下,很快的事情啊。 c++中,类 只能定义在主函数的前面吗?

#2


引用 1 楼 alex_my 的回复:
可以自己测试下,很快的事情啊。 c++中,类 只能定义在主函数的前面吗?
测试了 不可以,不知道是不是写的不对,所以来问下,另外 不要用头文件的方法

#3


上测试代码。

#4


引用 3 楼 ForestDB 的回复:
上测试代码。
这还用得着测试代码
//这样可以
class lei
{
int x;
public:
int getx(){return x;}
}a;
int main()
{
cout<<a.getx();
}

//像函数那样不可以
class lei;
int main()
{
lei a;
cout<<a.getx();
}
class lei
{
int x;
public:
int getx(){return x;}
};

//这是函数
int hanshu(int a);
int main()
{
cout<<hanshu(2);
}
int hanshu(int a)
{
return a;
}

#5


前置声明,参考C++ Primer:

  我们也可以声明一个类但是井不定义它例如   
  
class   Screen;   //   Screen类的声明
   
  这个声明向程序引入了一个名字Screen   指示Screen   为一个类类型   
    
  但是我们只能以有限的方式使用已经被声明但还没有被定义的类类型,如果没有定义类,   
  那么我们就不能定义这类类型的对象。因为类类型的大小不知道,编译器不知道为这种类类型的   
  对象预留多少存储空间;   
  但是我们可以声明指向该类类型的指针或引用,允许指针和引用是因为它们都有固定的大小,这与   
  它们指向的对象的大小无关。但是因为该类的大小和类成员都是未知的,所以要等到完全定义了该类   
  我们才能将解引用操作符*   ,   应用在这样的指针上或者使用指针或引用来指向某一个类成员。   
    
  例如:   
  这里Screen   只有声明没有定义:   
  

  class   Screen;   //声明   
  class   StackScreen   {   
      Screen   *stack;     //ok:指向一个Screen对象   
  };
   

#6


类的定义肯定要出现在定义类对象的语句前吧。。