先上代码:
#include<iostream>
using namespace std;
class stack
{
public:
stack(int size);
stack();
};
int main()
{
// stack* s=new stack(40);
stack s;
s=40;
// s=40;
// cout<<s<<endl;
return 0;
}
using namespace std;
class stack
{
public:
stack(int size);
stack();
};
int main()
{
// stack* s=new stack(40);
stack s;
s=40;
// s=40;
// cout<<s<<endl;
return 0;
}
这里有个奇怪的地方,s=40竟然没报错,要知道s是stack类型的,是一个类对象啊。这无疑会产生意料之外的结果。解决这个问题的方法是在stack的构造函数前加上explicit关键字即可