【发布时间】:2017-01-21 19:33:10
【问题描述】:
所以,我是新来的,如有错误请多多包涵。
我是一名正在学习 C++ 的大学生,并且不熟悉构造函数和析构函数。
我想要做的是:我需要创建一个程序来维护对象的实时计数,即,每当创建或销毁该类的对象时,对象计数器就会分别递增/递减并显示(无论如何,这是我的逻辑,建议会让我感激不尽)。
这意味着创建一个静态变量,我做了这个:
class objectCount
{
protected:
static int count;
public:
objectCount()
{
count++;
cout<<"Object of type class created. \nNo. of objects of type class currently: "<<count<<endl;
}
~objectCount()
{
count--;
cout<<"Latest object of type class deleted. \nNo. of objects of type class currently: "<<count<<endl;
}
};
int objectCount::count=0;
void main()
{
int ch;
clrscr();
cout<<"--------------- || OBJECT COUNTER || ----------------"<<endl;
do {
cout<<"1. Create Object\n2. Delete Object\n3.Exit";
cout<<endl<<"Enter your choice: ";
cin>>ch;
switch(ch)
{
case 1: objectCount();
break;
case 2: ~objectCount();
break;
case 3: break;
default: cout<<endl<<"Invalid Choice.";
break;
};
}while(ch!=3);
getch();
}
所以,我以为我已经准备好出发了,但是 TurboC(是的,我的大学强迫我们使用 TC,因此我没有其他选择但也可以使用它)给了我一个错误(非法结构操作)在“案例 2:~objectCounter();”部分。我翻阅了书籍并意识到我忘记了构造函数也需要对象声明。 (objectCount OC;)
但现在我对如何更改代码以使其正常工作感到困惑。
我需要它,以便根据用户选择创建一个对象,不。更新和打印的对象,否则删除对象,否。打印和更新的对象数量,完成后退出。
我四处搜索,但通常发布示例的人只是声明有限数量的对象,例如“objectCount c1; objectCount c2;”并完成它,这不是我的情况。
请各位尊敬的、善良的、温和的和知识渊博的社区中的任何人帮助我吗?
编辑:理想输出:
--------------- || OBJECT COUNTER || ----------------
1. Create Object
2. Delete Object
3. Exit
Enter your choice: 1
Object of type class created.
No. of objects of type class currently: 1 //Static variable incremented & displayed here.
1. Create Object
2. Delete Object
3. Exit
Enter your choice: 1
Object of type class created.
No. of objects of type class currently: 2 //Static variable incremented & displayed here.
1. Create Object
2. Delete Object
3. Exit
Enter your choice: 2
Object of type class deleted
No. of objects of type class currently: 1 //Static variable decremented & displayed here.
1. Create Object
2. Delete Object
3. Exit
Enter your choice: 3
编辑 2:我想我会按照 besc 的建议使用包含 100 个对象的数组,现在应该可以了。
但感谢大家的回答,是的,我肯定会超越 TC 并了解真正的交易。
【问题讨论】:
-
“是的,我的大学强迫我们使用 TC,因此我没有其他选择,但也可以使用它” 请务必稍后在 实际 C++,然后再寻找专业软件开发方面的工作。
-
“我四处搜索,但通常发布示例的人只是声明有限数量的对象,例如“objectCount c1(); objectCount c2();" 并完成它,这不是我的情况" 这些是函数声明,而不是对象。
-
“但现在我很困惑如何更改代码以使其正常工作。” 向量?当用户按下“1”时,将一个新对象添加到向量中。当用户按下“2”时,从向量中移除一个对象。太做作了,你没有很好地表达你的要求,所以我们不能给你一个正确的答案。至少,您的引用计数几乎是正确的,尽管您已经忘记了复制构造函数。
-
2017年使用TurboC++教学的真正意义是什么...现代编译器是免费的。
-
“虽然我猜这是因为我们将“计算机图形学”作为一个主题,并使用了 graphics.h 头文件,如果错了,请纠正我,它不在现代编译器中" 正确 - 现代编译器支持 实际 图形工具,而不是 1980 年代 DOS 版本的命令行模仿。令人难以置信的是,您的州教育委员会可能如此愚蠢。
标签: c++ class constructor count destructor