C++类-屏蔽掉系统自带的 默认构造函数

Posted LC编程开发者

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++类-屏蔽掉系统自带的 默认构造函数相关的知识,希望对你有一定的参考价值。

 屏蔽掉系统自带的 默认构造函数

       如果用户自己没有定义构造函数,那么,C++系统会自动生成一个构造函数,只是,这个构造函数的函数体是空的,也没有参数,不执行初始化操作。

例如,定义一个C++类,类名是 student,如下:

class student       //class开头

   ... ;

那么,构造函数的函数名与类名相同,所以,构造函数的函数名是student

如果student类没有定义构造函数,那么,编译器自动给student类定义一个构造函数,这个构造函数的参数是空,而且没有返回类型。所以,函数定义如下:

student();

那么,当我们定义了一个构造函数之后,系统将不提供这个无参的构造函数。测试代码如下:

       程序编译异常,提示如下:

       可以看到,在main()函数中定义student类对象,我们没有提供参数,定义如下:

student stud;

此时,调用的是student类无参构造函数。但是,编译异常,提示:

test.cpp:31: error: no matching function for call to ‘student::student()’

       表示student类没有student:: student ()构造函数,所以,无法定义stud对象。

因为student类定义了一个构造函数之后,系统不再为student类提供一个无参的构造函数。所以,上面的代码,需要自己再定义一个无参的构造函数。测试代码如下:

       程序运行结果如下:

       可以看到,增加了student()无参构造函数,才满足student stud; 语句的执行,调用无参构造函数,定义一个student类型的对象。所以,我们需要谨记:当我们为一个类定义了构造函数之后,系统就不再为该类提供默认的无参构造函数。

韦凯峰 Linux C/C++ 程序设计教程,Linux 系统编程,Openwrt 系统开发,微信:13926572996,QQ:1523520001,博客:www.mylinux.vip

以上是关于C++类-屏蔽掉系统自带的 默认构造函数的主要内容,如果未能解决你的问题,请参考以下文章

C++:对象和类|| 类的构造函数与析构函数

C++:对象和类|| 类的构造函数与析构函数

c++类大四个默认函数-构造函数 析构函数 拷贝构造函数 赋值构造函数

C++调用父类的构造函数规则

C++的默认构造函数(待确认整理)

C++类-使用默认参数的构造函数