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++是不一样的?
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;
}
};