永发信息网

类的构造函数写在公有私有和保护里面有哪些用处

答案:5  悬赏:0  手机版
解决时间 2021-03-19 23:08
class A
{public:A();};

class A
{protected:A();};

class A
{private:A();};

分别有哪些作用。写在哪里都是一样的吗??
最佳答案
不一样。构造函数如果必须是公有的,这样才能在类外被调用。后面两种写法,你如果在主函数中声明 A a; 会报错。
如果将构造函数声明为受保护的,那么只能被子类调用了;
如果将构造函数声明为私有的,除了类自己的其他构造函数能够调用它之外,不能被类外和子类调用。
示例:
#include<iostream>
using namespace std;
class A
{
private:
A(){cout<<"A()"<<endl;}
public:
A(int a)
{
cout<<"A(int a): "<<a<<endl;
A();
}
};
int main()
{
A a(2);
return 0;
}
全部回答
必须是public 这是c++的规定。
//--------------------------------------------------------------------------- #include <iostream> class circle{ protected: float R; private: float PI; public: circle(void){} circle(float a):R(a),PI(3.14){}; void area(void) const { std::cout<<PI*R*R<<std::endl; } }; class square:protected circle{ public: square(float a); square(void){}; void area(void) const { std::cout<<R*R*4<<std::endl; } }; int main(void) { square sq(10); circle cl(10); cl.area(); sq.area(); return 0; } //---------------------------------------------------------------------------
不一样。构造函数如果必须是公有的,这样才能在类外被调用。后面两种写法,你如果在主函数中声明 A a; 会报错。 如果将构造函数声明为受保护的,那么只能被子类调用了; 如果将构造函数声明为私有的,除了类自己的其他构造函数能够调用它之外,不能被类外和子类调用。 示例: #include<iostream> using namespace std; class A { private: A(){cout<<"A()"<<endl;} public: A(int a) { cout<<"A(int a): "<<a<<endl; A(); } }; int main() { A a(2); return 0; }
不一样。构造函数如果必须是公有的,这样才能在类外被调用。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
我是平安员工,我正在谈的一个客户被同事翘了
上海如量贸易有限公司怎么样?
08年高考300分左右能上个医学影象或者医学检
周六股市开盘吗
最不利点自由水头是什么意思
我方做好合同并签字盖章邮寄给对方签字盖章并
这些东西都是什么啊?
电热水器的问提?
外汇局丽水市中心支局在哪里啊,我有事要去这
想知道: 东莞市 凤岗三正依山居 在哪
农历54年2月26日巳时生人一生命运怎样
php代码执行出来是乱码
香港人喜欢吃什么?
常州闯红灯电子眼抓拍扣分吗现在 以前不扣的
一个月的宝宝大便成条状正常吗
推荐资讯
戴伟五金水电建材批发怎么去啊,有知道地址的
小米手机微信上面怎么发信息给多人
请问龙岗老街沃尔玛1楼那个香港中国黄金店买
食盐与白糖的溶解能力谁强,详细说明为什么
观赏莲花的地方有哪些?
我爸爸在医院做肠镜,肠子穿孔,医院有什么责
弱弱的问一下,有没有必要给车加挡泥板啊?主
东南dx3转弯半径是多少
高斯信息科技有限公司地址在哪,我要去那里办
为什么每次填完问卷星以后抽奖都抽不到100元
东红饼屋地址在哪,我要去那里办事
算命先生给我一道符回来压床,然后每晚我都会
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?