c++构造函数的问题

来源:百度知道 编辑:UC知道 时间:2024/05/24 03:07:38
c++基本数据类型 在定义的时候 比如 int x; 这样 是不会自动调用构造函数 的 但是int x=int(); 这样就才可以 自动构造 为什么?不是默认构造吗?为什么还要 显示的调用出来?
还有 就是 如果一个类中没有默认构造函数 编译的时候不通过!!怎么搞的??没有默认构造函数(但是有带参数的构造函数)定义对象的时候编译不能通过 为什么????
class student
{
private:
int age;
public:
student(int a){age=a;}
};
int main()
{
student tom;//这一行编译出错,你们给个解释吧(只有待参数的构造函数,没有默认构造就不能定义、对象了吗)
}

不是..这样的..构造函数是针对一个类中的某些成员变量进行初始化,比如你的一个类里的有一个int x;但是没有赋值 ,你可以在构造函数中将它赋为0什么的..你的基本概念不是很清,,建议再看看书.

类的构造函数只有类对象才有,像语言自带的int啊,char啊,指针啊,是没有构造函数的。顺便说明下,构造函数是用来完成一个类对象的初始化的,就是说给对象里的各个需要赋初始值的数据成员赋值,完成数据的格式化工作等等,基本数据类型不需要这些工作,所以没有构造函数。不过,在一些纯粹面向对象的语言中,对这些数据进行了封装,所以也有了构造函数了就。
一个类的对象被定义的时候,会首先调用构造函数进行初始化,除非你显示的调用初始化工作,否则系统默认调用没有参数的构造函数,因为你没有定义无参数的构造函数,所以出现调用出错,就是编译出错的情况。

我的都是可以通过的,你用的是什么标准的C++呢,int这些基本类型不是对象,不属于什么类,怎么去构造呢。不过如果你自己有构造函数了就不会有默认构造函数了

一般一个类的构造函数不止一个的,会有重载的,一般有2个或者更多,其中有不带参数的,也有待参数的,还有可能会有带缺省值的,这样当你定义一个类的对象时,根据你是否给参数的情况及给出的参数的个数,系统会自动为你匹配一个构造函数,如int x;x=1;可以,int x(1);也可以达到相同的效果,你的
int x=int();这种情况还没看到过,但是如果是这样的话。那么int()肯定不是构造函数,因为它有一个返回值,而构造函数是没有任何返回值的,准确来说是没有给用户的返回值的。
至于第二个问题,你就算没有给出构造函数,一般系统会为你给出一个,但是其中是空的,这是默认的构造函数,所以你说的类中会没有构造函数是不可能的,当你定义了戴、带参数的构造函数时,你定义对象也要和你的构造函数匹配,不然就会出现错误,因为你自己定义了构造函数的话,系统是不会再为你定义一个的,所以这种做法一般不好,这就又回到了刚才的,一般要定义2个构造函数。