在早期的C++中。假设须要一些接受一些參数的构造函数,同一时候须要一个不接收不论什么參数的默认构造函数。就必须显示地编写空的默认构造函数.比如:

//tc.h
class A{
private:
int i;
public:
A(){};
A(int ii);
};

但最好就是接口和声明分离。那么就是例如以下的定义

//tc,h
class A{
private:
int i;
public:
A();
A(int ii)。
};

这样,就必须在实现中给出空參数构造函数的实现:

#include <iostream>
#include "tc.h"
using namespace std;
A::A(){//必须给出事实上现
};
A::A(int ii){
i=ii;
}
void A::show()const{
std::cout<<"this is A object!"<<std::endl;
};
int main()
{
A a;
a.show();
}

为了避免手动编写空默认构造函数,C++11引入了显示默认构造函数的概念,从而仅仅需在类的定义中编写空默认构造函数而不须要在实现文件里提供事实上现:

//tc.h
#ifndef tc_h_
#define tc_h_
class A{
private:
int i;
public:
A()=default;//default
A(int ii);
void show()const;
};
#endif
//tc.cpp
#include <iostream>
#include "tc.h"
using namespace std;
/*
A::A(){//不必给出事实上现
};
*/
A::A(int ii){
i=ii;
}
void A::show()const{
std::cout<<"this is A object!"<<std::endl;
};
int main()
{
A a;
a.show();
}

编译以及运行结果:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXE4NDQzNTIxNTU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

相同的,C++还支持显式删除构造函数的概念。

比如。你想定义一个类。这个类没有不论什么的构造函数,而且你也不想让编译器自己主动生成一个默认的空參数的构造函数,那么你就能够显式地删除默认构造函数。

//tc.h
#ifndef tc_h_
#define tc_h_
class A{
private:
int i;
public:
A()=delete;//delete
void show()const;
};
#endif
//tc.cpp
#include <iostream>
#include "tc.h"
using namespace std;
/*
A::A(){//必须给出事实上现
}; A::A(int ii){
i=ii;
}*/
void A::show()const{
std::cout<<"this is A object!"<<std::endl;
};
int main()
{
A a;
a.show();
}

编译结果:

能够看到,默认构造函数被删除了。那么。能不能删除一些其它的带參数构造函数呢?

事实上这个问题有点多余,由于假设你不想要这个构造函数,你不定义这个带參的构造函数就OK了!

最新文章

  1. Minecraft 插件 world edit 的cs 命令
  2. MAC OSX通过Terminal命令行控制蓝牙状态开关
  3. ios中常见数据存储方式以及SQLite常用的语句
  4. u-boot移植总结(三)(转)S3C2440对Nand Flash操作和电路原理(基于K9F2G08U0A)
  5. ftp下载显示进度
  6. 使用Jsoup帮助解析具有html标签的数据和解析网页
  7. bigdata_ambari修改hiveserver_metastore链接库(从0.14 升级到1.2.1 )
  8. XLSTransformer生成excel文件
  9. from表单实现无跳转上传文件,接收页面后台数据。
  10. WEB认证模式:Basic &amp; Digest
  11. 输入法searchLookUpEditd的使用
  12. c#调试快捷键
  13. 正则表达示 for Python3
  14. RocketMQ源码 — 五、 主要feature及其实现方式
  15. 10.22JS日记
  16. MySQL入门详解(一)---mysql的语言
  17. 使用云负载时将http的请求转发至https时报错:“ERR_TOO_MANY_REDIRECTS”!
  18. 《C++ Without Fear》 第1章 第一个C++程序
  19. Sql server字段排序,如果字段是字符型的数字
  20. solr 服务器搭建(Linux版)

热门文章

  1. TP5报错variable type error: array
  2. Codeforces B - Berland National Library
  3. DOS批处理高级教程
  4. Jmeter:Java request
  5. IDEA 开发环境中 调试Spark SQL及遇到问题解决办法
  6. Linux服务器修改时区时间
  7. 虚拟机和宿主机不能互ping的解决办法等
  8. reindex-maven 私服(nexus)架设以及项目管理中遇到的问题及解决方案(updating)
  9. eclipse修改文件编码
  10. JSEclipse—Eclipse上的JavaScript开发工具