C++中缺省构造函数是public还是private的?
C++小白,正在从头学习中。问题是:在class里如果不设置构造函数,那么缺省的构造函数是公共的还是私有的?又或者由于构造函数不能被调用,因此无所谓公共还是私有。同理:由...
C++小白,正在从头学习中。
问题是:在class里如果不设置构造函数,那么缺省的构造函数是公共的还是私有的?又或者由于构造函数不能被调用,因此无所谓公共还是私有。
同理:由struct定义的类里呢?缺省构造函数是公共的还是私有的?是否受其默认的属性影响。
我注意到很多教学的例子中由class定义的类里,构造函数会特意写在public里。 展开
问题是:在class里如果不设置构造函数,那么缺省的构造函数是公共的还是私有的?又或者由于构造函数不能被调用,因此无所谓公共还是私有。
同理:由struct定义的类里呢?缺省构造函数是公共的还是私有的?是否受其默认的属性影响。
我注意到很多教学的例子中由class定义的类里,构造函数会特意写在public里。 展开
3个回答
展开全部
构造函数一律都是公有成员。系统在构造对象的时候会调用构造函数的,如果是私有成员的话,就无权访问了。如果将构造函数写在private关键字后面,那么编译时会报错的。
构造函数 ,是一种特殊的方法。主要用来在创建对象时初始化对象, 即为对象成员变量赋初始值,总与new运算符一起使用在创建对象的语句中。特别的一个类可以有多个构造函数 ,可根据其参数个数的不同或参数类型的不同来区分它们 即构造函数的重载。
C++语言为类提供的构造函数可自动完成对象的初始化任务,全局对象和静态对象的构造函数在main()函数执行之前就被调用,局部静态对象的构造函数是当程序第一次执行到相应语句时才被调用。然而给出一个外部对象的引用性声明时,并不调用相应的构造函数,因为这个外部对象只是引用在其他地方声明的对象,并没有真正地创建一个对象。
如果一个类中没有定义任何的构造函数,那么编译器只有在以下三种情况,才会提供默认的构造函数:
1、如果类有虚拟成员函数或者虚拟继承父类(即有虚拟基类)时;
2、如果类的基类有构造函数(可以是用户定义的构造函数,或编译器提供的默认构造函数);
3、在类中的所有非静态的对象数据成员,它们对应的类中有构造函数(可以是用户定义的构造函数,或编译器提供的默认构造函数)。
构造函数 ,是一种特殊的方法。主要用来在创建对象时初始化对象, 即为对象成员变量赋初始值,总与new运算符一起使用在创建对象的语句中。特别的一个类可以有多个构造函数 ,可根据其参数个数的不同或参数类型的不同来区分它们 即构造函数的重载。
C++语言为类提供的构造函数可自动完成对象的初始化任务,全局对象和静态对象的构造函数在main()函数执行之前就被调用,局部静态对象的构造函数是当程序第一次执行到相应语句时才被调用。然而给出一个外部对象的引用性声明时,并不调用相应的构造函数,因为这个外部对象只是引用在其他地方声明的对象,并没有真正地创建一个对象。
如果一个类中没有定义任何的构造函数,那么编译器只有在以下三种情况,才会提供默认的构造函数:
1、如果类有虚拟成员函数或者虚拟继承父类(即有虚拟基类)时;
2、如果类的基类有构造函数(可以是用户定义的构造函数,或编译器提供的默认构造函数);
3、在类中的所有非静态的对象数据成员,它们对应的类中有构造函数(可以是用户定义的构造函数,或编译器提供的默认构造函数)。
展开全部
构造函数一律都是公有成员;构造函数不是不能被调用,而是不能被用户调用。系统在构造对象的时候会调用构造函数的。如果是私有成员的话,就无权访问了。所以你可以试试,如果将构造函数写在private关键字后面,那么编译时会报错的。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
公有的,构造函数主要是用于初始化类的成员变量
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |