为什么类被构建了?

lbskln 2005-04-16 07:30:47
有一个类:
class a
{
public:
a()
{
cout<<"start"<<endl;
}
~a()
{
cout<<"end"<<endl;
}
}MyClass;
main()
{
cout<<"\nmain\n"<<endl;
}

输出结果是:
start

main

请问为什么这个类没有被实例化也被构建了呢?
类外面的MyClass代表什么?
当没有MyClass时这个类就不会被实例化!为什么?
...全文
36 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
lbskln 2005-04-16
  • 打赏
  • 举报
回复
明白了,原来对象也可以这么定义。
dongpy 2005-04-16
  • 打赏
  • 举报
回复
class a
{
public:
a()
{
cout<<"start"<<endl;
}
~a()
{
cout<<"end"<<endl;
}
}MyClass;
//已经定义了一个类对象 a MyClass;
v41dugu 2005-04-16
  • 打赏
  • 举报
回复
你要分清楚类和对象,你定义的
class a
{
public:
a()
{
cout<<"start"<<endl;
}
~a()
{
cout<<"end"<<endl;
}
};
这是一个类。而后面的Myclass是这个类的一个对象。定义了一个类就相当于定义了一种数据类型,就想int是一样的。而对象就相当于变量,就是 int a 中的a 你写了Myclass,系统会调用一个默认的构造函数来初始化这个对象(如果你自己写了至少一个构造函数,就调用你自己写的)
如果没有Myclass 就相当于只定义了一个数据类型,好象int一样,不会分配内存,只有你定义了一个这种数据类型的变量(对象,Myclass),系统才会为这个对象分配内存,才会实例化
1982pc 2005-04-16
  • 打赏
  • 举报
回复
class a
{
public:
a()
{
cout<<"start"<<endl;
}
~a()
{
cout<<"end"<<endl;
}
}MyClass;//你这里不是声明了吗?

64,691

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧