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++类-屏蔽掉系统自带的 默认构造函数的主要内容,如果未能解决你的问题,请参考以下文章