C++空类详解
空类默认产生的成员:
class Empty {};
Empty(); // 默认构造函数
Empty( const Empty& ); // 默认拷贝构造函数
~Empty(); // 默认析构函数
Empty& operator=( const Empty& ); // 默认赋值运算符
Empty* operator&(); // 取址运算符
const Empty* operator&() const; // 取址运算符 const
#include<iostream>
using namespace std;
class Empty
{
public:
Empty *operator&()
{
cout<<"AAAA"<<endl;
return this;
}
const Empty* operator&() const
{
cout<<"BBBB"<<endl;
return this;
}
};
int main(void)
{
Empty e;
Empty *p=&e;
const Empty e2;
const Empty *p2=&e2;
cout<<sizeof(Empty)<<endl;
}
运行结果:
可见:
Empty *p=&e调用了Empty* operator&()运算符函数
const Empty *p2=&e2调用了const Empty* operator&() const运算符函数。
空类的大小为1字节。
相关推荐
-
c语言获取文件大小的示例
1.fseek 函数原型: 复制代码 代码如下: int fseek ( FILE * stream, long int offset, int origin ); 参数说明:stream,文件流指针:offest,偏移量:orgin,原(始位置.其中orgin的可选值有SEEK_SET(文件开始).SEEK_CUR(文件指针当前位置).SEEK_END(文件结尾). 函数说明:对于二进制模式打开的流,新的流位置是origin + offset. 2.ftell 函数原型:long int ft
-
C++空类及没有成员变量的类的大小实例分析
众所周知的C++中空类的大小为1,但是除了空类之外的其他一些没有成员变量的类的大小,还是有相当一部分开发人员对此有很多不明之处的. 这里我们以如下代码为例: #include using namespace std; class a {}; class b{}; class c :public a{ virtual void fun() = 0; }; class d :public b, public c{}; int main() { cout << "sizeof(a)&quo
-
深入分析C++中类的大小
首先看一个例子: 复制代码 代码如下: #include <iostream> using namespace std; class A{}; class B { int b; char c; }; class C { int c1; static int c2; }; int C::c2 = 1; class D:public C,public B{ int d; }; int main() { cout<<"s
-
c++动态内存空间示例(自定义空间类型大小和空间长度)
动态内存空间的申请示范 利用C++的特性,能够自定义空间的类型大小和空间长度 下面这个程序是个数组动态配置的简单示例 复制代码 代码如下: #include <iostream>using namespace std; int main(){ int size = 0; cout << "请输入数组长度:"; //能够自定义的动态申请空间长度 cin >> size; int *arr_Point = new int[size];
-
C++空类默认函数详细解析
定义一个空的C++类,例如 class Empty{} 一个空的class在C++编译器处理过后就不再为空,编译器会自动地为我们声明一些member function,一般编译过去就相当于 复制代码 代码如下: class Empty{public:Empty(); // 缺省构造函数Empty( const Empty& ); // 拷贝构造函数~Empty(); // 析构函数Empty& operator=( const Empty& ); // 赋值运算符Empty* op
-
C++空类详解
空类默认产生的成员:class Empty {};Empty(); // 默认构造函数Empty( const Empty& ); // 默认拷贝构造函数~Empty(); // 默认析构函数Empty& operator=( const Empty& ); // 默认赋值运算符Empty* operator&(); // 取址运算符const Empty* operator&() const; // 取址运算符 const 给出
-
python 接口_从协议到抽象基类详解
抽象基类的常见用途:实现接口时作为超类使用.然后,说明抽象基类如何检查具体子类是否符合接口定义,以及如何使用注册机制声明一个类实现了某个接口,而不进行子类化操作.最后,说明如何让抽象基类自动"识别"任何符合接口的类--不进行子类化或注册. Python文化中的接口和协议 接口在动态类型语言中是怎么运作的呢?首先,基本的事实是,Python语言没有 interface 关键字,而且除了抽象基类,每个类都有接口:类实现或继承的公开属性(方法或数据属性),包括特殊方法,如__getitem_
-
Kotlin 的注解类详解及实例
Kotlin 的注解类详解及实例 注解声明 注解是将元数据附加到代码的方法.要声明注解,请将 annotation 修饰符放在类的前面: annotation class Fancy 注解的附加属性可以通过用元注解标注注解类来指定: @Target 指定可以用 该注解标注的元素的可能的类型(类.函数.属性.表达式等): @Retention 指定该注解是否 存储在编译后的 class 文件中,以及它在运行时能否通过反射可见 (默认都是 true): @Repeatable 允许 在单个元素上多次
-
Java下Struts框架中的ActionForm类详解
ActionForm的应用 (1) .创建一个form类必须继承四个父类中的一个.比如继承ActionForm. (2) .一个form类中的每一个属性都将和页面中form 表单中的每一个元素一一对应 例如. 一个表单为: <form> <input type="text" name="username"></input> <input type="password" name="passwor
-
Java并发编程之LockSupport类详解
一.LockSupport类的属性 private static final sun.misc.Unsafe UNSAFE; // 表示内存偏移地址 private static final long parkBlockerOffset; // 表示内存偏移地址 private static final long SEED; // 表示内存偏移地址 private static final long PROBE; // 表示内存偏移地址 private static final long SEC
-
Java SpringMVC 异常处理SimpleMappingExceptionResolver类详解
Spring3.0 对异常的处理方式总共有两种: 一种是使用 HandlerExceptionResolver 接口,并且 Spring 已经提供默认的实现类 SimpleMappingExceptionResolver. 第二种方法是在 Controller 内部实现,灵活性更高. 从目前的调查结果来看,这两种方式不能共存.我们一般在项目中使用第一种方法. 下面分别描述一下这两种使用方式: 一.基于 HandlerExceptionResolver 接口的方式 使用这种方式只需要实现 reso
-
Android中CountDownTimer类详解
一.概述 项目中经常用到倒计时的功能,比如说限时抢购,手机获取验证码等等.而google官方也帮我们封装好了一个类:CountDownTimer,使我们的开发更加方便: 二.API CountDownTimer是一个抽象类,有两个抽象方法,它的API很简单 public abstract void onTick(long millisUntilFinished);//这个是每次间隔指定时间的回调,millisUntilFinished:剩余的时间,单位毫秒 public abstract voi
-
JavaSE系列基础包装类及日历类详解
目录 1. 基本类型包装类 1.1 概述 1.2 Integer类的概述与使用 1.3 int和String的相互转换 1.4 案例-字符串中数据排序 1.5 自动装箱和拆箱 2. Date类 2.1 Date常用方法 3. SimpleDateFormat类 3.1 案例-日期工具类 4. Calendar类-日历 4.1 Calendar 的常用方法 1. 基本类型包装类 1.1 概述 它用于基本数据类型与字符串之间的转换 举例: public class IntegerDemo { pub
-
Java Optional的判空操作详解
目录 Optional判空 代码模拟 Optional常用方法 使用Optional一定比null好吗 Optional 使用场景 Optional判空 JAVA在1.8版本推出Optional,官方文档将其描述为可能包含或不包含非空值的容器对象,目前Optional用于避免程序出现异常NullPointerException. 代码模拟 // 下面所有类省略set,get方法 public class Employee { private String employeeName; privat
-
Java集合之Map接口与实现类详解
目录 初识Map Map中常用方法 HashMap LinkedHashMap TreeMap HashMap和TreeMap的比较 Hashtable 集合中元素的遍历 iterator接口中的方法 Enumeration接口中的方法 初识Map Map接口没有从Collection接口继承,Map接口用于维护“键-值”对数据,这个“键-值”对就是Map中的元素,Map提供“键(Key)”到“值(value)”的映射,一个Map中键值必须是唯一的,不能有重复的键,因为Map中的“键-值”对元素
随机推荐
- jQuery选择器源码解读(一):Sizzle方法
- JavaScript实现数组在指定位置插入若干元素的方法
- mybatis中实现枚举自动转换方法详解
- Java web velocity分页宏示例
- Asp.NetCore1.1版本去掉project.json后如何打包生成跨平台包
- ASP.NET 数据访问类
- JS获取鼠标位置距浏览器窗口距离的方法示例
- ASP.NET将文件写到另一服务器(图文教程)及注意事项
- .net读取Rss转换为DataTable
- 建站常用13种PHP开源CMS比较
- Shell正则表达式学习笔记
- 几例在ASP存储过程的使用方法
- WinForm项目开发中NPOI用法实例解析
- 使用requestAnimationFrame实现js动画性能好
- 基于JS实现移动端访问PC端页面时跳转到对应的移动端网页
- js实现获取焦点后光标在字符串后
- jQuery表单验证插件解析(推荐)
- 從博客網扣了一個效果出來
- JS中把函数作为另一函数的参数传递方法(总结)
- Nginx中共享session会话配置方法例子