C++ 小问题

来源:百度知道 编辑:UC知道 时间:2024/06/01 17:38:37
一个类M, 怎么限制用户不去调用它的构造函数来生成对象,也就是说有构造函数,但是不能用M test = new M();来声明。需要把构造函数怎么声明一下?
public class Test {
private Test() {

}
public static void main(String[] args) {
Test m = new Test();

}
}

楼下是说我把Test()声明成priatve就不能用Test m = new Test()来声明对象了吗?我试了一下可以啊。

对啊,是Java语言,我只是说这个道理,难道在这个问题上,Java和C++是不一样的?

你可以将类M的无参构造函数M()声明为私有(private)访问权限。但这也会给自己带来麻烦。

不能

1.可以将构造函数定义为私有,以免用户创建对象
2.可以自己重载构造和数,按照自己想法去构造

//欢迎在线讨论
把构造函数设为私有或保护

这不是C++语言吧....
貌似是java 、

构造函数只能是 public 的
#include<iostream>
using namespace std;

class M {

M() {
cout<<"调用了构造函数"<<endl;
}
public:
void function()
{
cout<<"调用了函数"<<endl;
}
};

int main()
{
M test;
test.function();
return 0;

}
//声明M test; 对象是自动调用构造函数

可以这样解决

#include<iostream>
using namespace std;

class M {
public:
M(int a,int b) {
//cout<<"调用了构造函数"<<endl;
cout<<a<<" "<<b<<endl;
}
M() {}

void function()
{
cout<<"调用了函数"<<endl;
}
};