创建DirectInput接口对象说明---(void **)&m_pDI

读别人代码时遇到的,起初没明白过来这是怎么回事,后来忽然想明白了.

1 if (FAILED(DirectInput8Create(appInstance,
2                                    DIRECTINPUT_VERSION,
3                                    IID_IDirectInput8,
4                                    (void **)&m_pDI,NULL)))
5 {
6      MessageBox(NULL,"创建DirectInput接口对象失败!","错误",MB_OK);
7      return false;
8 }

=================
4行   (void **)&m_pDI意思需要看一下声明:

LPDIRECTINPUT8 m_pDI;

m_pDI本身就是一个指针类型,获取m_pDI指针地址后,再通过  (void **)强制转换为符合DirectInput8Create规范(这个规范自己查一下)的参数类型

时间: 2024-10-23 22:42:17

创建DirectInput接口对象说明---(void **)&m_pDI的相关文章

创建一个接口Shape,其中有抽象方法area,类Circle 、Rectangle实现area方法计算其面积并返回。又有Star实现Shape的area方法,其返回值是0,Star类另有一返回值boolean型方法isStar;在main方法里创建一个Vector,根据随机数的不同向其中加入Shape的不同子类对象(如是1,生成Circle对象;如是2,生成Rectangle对象;如是3,生成S

题目补充: 创建一个接口Shape,其中有抽象方法area,类Circle .Rectangle实现area方法计算其面积并返回. 又有Star实现Shape的area方法,其返回值是0,Star类另有一返回值boolean型方法isStar: 在main方法里创建一个Vector,根据随机数的不同向其中加入Shape的不同子类对象(如是1,生成Circle对象: 如是2,生成Rectangle对象:如是3,生成Star对象).然后将Vector中元素依次取出,判断其是否为Star类.如是返回其

String到底创建了多少对象

Java代码   String str=new String("aaa"); 这行代码究竟创建了几个String对象呢?答案是2个,而不是3个.由于new String("aaa")相当于"aaa"与一个就是创建出来的放在堆时原实例对象,而另一个就是放在常量池中的 "aaa" 对象,当然这里的str本身只是一个引用,放在栈里,用来指向堆中创建出来的对象. 常量池(constant pool)指的是在编译期被确定,并被保存在已编

[Effective Java]创建和销毁对象

第一条:考虑用静态工厂方法代替构造器 使用静态工厂方法的优势: 静态工厂方法具有名称,具有适当名称的方法更易阅读. 具有多个构造器的类用户往往不知道该用哪个,可考虑提供多个合适命名的静态工厂方法. 相比于构造器,不必再每次调用时都创建一个新对象 不可变类可以预先创建好实例,或者将构件好的实例缓存起来,从而避免重复创建对象.此方法类似于Flyweight模式.如果程序经常请求创建相同的对象,并且创建对象的代价很高,此项技术可以极大地提升性能.  可以返回原返回类型的任意子类型 在选择返回对象的类时

接口对象的实例化在接口回调中的使用

首先澄清一个问题,就是接口不仅可以声明对象,而且可以把对象实例化!作用见下文. 接口回调:可以把实现某一接口类创建的对象的引用赋给该接口声明的接口变量,那么该 接口变量就可以调用被类实现的接口中的方法.实际上,当接口变量调用被类实现的接口 中的方法时,就是通知相应的对象调用接口方法. 我们看下面的例子: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 3

【Effective Java】创建和销毁对象

一.考虑用静态工厂方法代替构造器 构造器是创建一个对象实例的最基本最常用的方法.开发者在使用某个类的时候,通常会使用new一个构造器来实现,其实也有其他方式可以实现的,如利用发射机制.这里主要说的是通过静态类工厂的方式来创建class的实例,如: public static Boolean valueOf(boolean b) { return b ? Boolean.TRUE : Boolean.FALSE; } 静态工厂方法和构造器不同有以下主要优势: 1.有意义的名称. 可能有多个构造器,

dhroid - ioc高级(接口,对象注入)

下面到了接口对象的注入了解冻吧,现在才是我们的重点,这才是ioc的核心思想,上面的都是android的辅助1.5 对象依赖问题 我们先来将一下对象对象依赖的重要性,很多同学可能只学了android没学过javaee ,跟没听过spring的强大例如中我们dhroid库的dhnet网络模块中在网络加载时自动显示对话框,但是我们不能用默认的对话框,到了真正的项目框基本中是需要定制的 我们库中有不知道对话框长什么样,但是又要用 这时我们可以面向接口编程我们定义一个接口IDialog public in

effective java读书笔记1——创建和销毁对象

今天刚开始读effective java,中文版的读起来很拗口,但感觉收获很多. 另外,这本书的内容是针对Java 1.5和1.6的. 在这里整理一下第2章:创建和销毁对象 的内容. 第一条:考虑用静态工厂方法代替构造器 这一条针对的情景是要获得类的实例时.一般说来,想要获得类的实例,都是通过构造函数(书里叫做构造器). 最常见的构造函数是这样的,没有返回参数,名字和类名相同. public class A{ public A(int a){ //构造函数内容 ... } } 而所谓的静态工厂,

[Effective Java]第二章 创建和销毁对象

第一章      前言 略... 第二章      创建和销毁对象 1.            考虑用静态工厂方法代替构造器 创建对象方法:一是最常用的公有构造器,二是静态工厂方法.下面是一个Boolean的简单示例: public static Boolean valueOf(boolean b) { return (b ? Boolean.TRUE : Boolean.FALSE); } l  静态工厂方法与构造器不同的第一大优势在于,它们有名称. 作用不同的公有构造器只能通过参数来区别(因

【读书笔记】《Effective Java》——创建和销毁对象

Item 1. 考虑用静态工厂方法替代构造器 获得一个类的实例时我们都会采取一个公有的构造器.Foo x = new Foo(): 同时我们应该掌握另一种方法就是静态工厂方法(static factory method). 一句话总结,静态工厂方法其实就是一个返回类的实例的静态方法. 书中给出的例子是Boolean的valueOf方法: 通过valueOf方法将boolean基本类型转换成了一个Boolean类型,返回了一个新的对象引用. 除valueOf外,像Java中的getInstance