在早期的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了!

C++学习笔记16,C++11中的显式的默认构造函数以及显示删除默认构造函数的更多相关文章

  1. SQL反模式学习笔记16 使用随机数排序

    目标:随机排序,使用高效的SQL语句查询获取随机数据样本. 反模式:使用RAND()随机函数 SELECT * FROM Employees AS e ORDER BY RAND() Limit 1 ...

  2. Ext.Net学习笔记16:Ext.Net GridPanel 折叠/展开行

    Ext.Net学习笔记16:Ext.Net GridPanel 折叠/展开行 Ext.Net GridPanel的行支持折叠/展开功能,这个功能个人觉得还说很有用处的,尤其是数据中包含图片等内容的时候 ...

  3. golang学习笔记16 beego orm 数据库操作

    golang学习笔记16 beego orm 数据库操作 beego ORM 是一个强大的 Go 语言 ORM 框架.她的灵感主要来自 Django ORM 和 SQLAlchemy. 目前该框架仍处 ...

  4. Kafka 学习笔记之 Kafka0.11之console-producer/console-consumer

    Kafka 学习笔记之 Kafka0.11之console-producer/console-consumer: 启动Zookeeper 启动Kafka0.11 创建一个新的Topic: ./kafk ...

  5. Spring装配bean(在java中进行显式配置)

    1.简单介绍 Spring提供了三种装配机制: 1.在XML中进行显式配置: 2.在java中进行显式配置: 3.隐式的bean发现机制和自动装配. 其中,1和3项在项目中经常使用,而在java中进行 ...

  6. [原创]java WEB学习笔记38:EL 中的 11个 隐含对象 详解

    本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...

  7. Android(java)学习笔记167:Java中操作文件的类介绍(File + IO流)

    1.File类:对硬盘上的文件和目录进行操作的类.    File类是文件和目录路径名抽象表现形式  构造函数:        1) File(String pathname)       Creat ...

  8. [C#] 类型学习笔记一:CLR中的类型,装箱和拆箱

    在学习.NET的时候,因为一些疑问,让我打算把.NET的类型篇做一个总结.总结以三篇博文的形式呈现. 这篇博文,作为三篇博文的第一篇,主要探讨了.NET Framework中的基本类型,以及这些类型一 ...

  9. Android(java)学习笔记110:Java中操作文件的类介绍(File + IO流)

    1.File类:对硬盘上的文件和目录进行操作的类.    File类是文件和目录路径名抽象表现形式  构造函数:        1) File(String pathname)       Creat ...

随机推荐

  1. 微信小程序 - 使用npm(第三方包)

    使用示例: 1. 开启“使用npm模块” 2. 新建 node_modules 文件夹 3. cd到新建 node_modules 所在的目录(非node_modules文件夹内) npm insta ...

  2. TCP相关面试题总结

    1.TCP三次握手过程 wireshark抓包为:(wireshark会将seq序号和ACK自己主动显示为相对值) 1)主机A发送标志syn=1,随机产生seq =1234567的数据包到server ...

  3. HTML5 Canvas画图与动画学习59例

    HTML5 Canvas画图与动画学习59例 学习HTML5 动画,画图的好资料. HTML5 Canvas画图与动画学习59例

  4. jquery遍历集合&数组&标签

      jquery遍历集合&数组的两种方式 CreateTime--2017年4月24日08:31:49Author:Marydon 方法一: $(function(){ $("inp ...

  5. .NET 垃圾回收机制要点整理

    1. .NET资源分托管资源和非托管资源,对于托管资源,.NET GC可以很好的回收无用的垃圾,而对于非托管(例如文件访问,网络访问等)需要手动清理垃圾(显式释放). 2. 非托管资源的释放,.NET ...

  6. [Done]SnowFlake 分布式环境下基于ZK构WorkId

    Twitter 的 Snowflake  大家应该都熟悉的,先上个图: 时间戳 序列号一般不会去改造,主要是工作机器id,大家会进行相关改造,我厂对工作机器进行了如下改造(估计大家都差不多吧,囧~~~ ...

  7. jquery之往一个CSS属性里写入多个值

    <html> <head> <title>test</title> <base href="<%=basePath%>&qu ...

  8. 17、JAVA流程控制

    一.IF 1.第一种形式:if if(逻辑表达式){ 语句1; 语句2; ... } 当if中只有一条语句时,可以省略{} 2.第二种形式:if-else if(逻辑表达式){ 语句块1: } els ...

  9. Javascript获取当月的天数

    var d = new Date(); var curMonthDays = new Date(d.getFullYear(), (d.getMonth() + 1), 0).getDate(); a ...

  10. zookeeper单节点和多节点配置

    单机单节点模式 zookeeper解压, 放到 /opt/zookeeper/下, 新建一个latest的软链 $ latest 将 conf/zoo-sample.cfg 重命名为 zoo.cfg, ...