default (C++)

Указывает, что настраиваемый или disp-интерфейс, определенный в коклассе, представляет интерфейс программирования по умолчанию.

Синтаксис

[ default(interface1, interface2) ]

Параметры

interface1
Интерфейс по умолчанию, который будет доступен для сред сценариев, создающих объект на основе класса, определенного атрибутом default .

Если исходный интерфейс по умолчанию не указан, в качестве интерфейса по умолчанию используется первое вхождение неисходного интерфейса.

interface2
(Необязательно) Исходный интерфейс по умолчанию. Этот интерфейс также необходимо указать с помощью атрибута source .

Если исходный интерфейс по умолчанию не указан, в качестве интерфейса по умолчанию используется первый исходный интерфейс.

Замечания

Атрибут default C++ имеет те же функции, что и атрибут MIDL по умолчанию . Атрибут default также используется с атрибутом case .

Пример

Следующий код показывает, как default используется в определении сокласса для указания ICustomDispatch в качестве интерфейса программирования по умолчанию:

// cpp_attr_ref_default.cpp
// compile with: /LD
#include "windows.h"
[module(name="MyLibrary")];

[object, uuid("9E66A290-4365-11D2-A997-00C04FA37DDB")]
__interface ICustom {
   HRESULT Custom([in] long l, [out, retval] long *pLong);
};

[dual, uuid("9E66A291-4365-11D2-A997-00C04FA37DDB")]
__interface IDual {
   HRESULT Dual([in] long l, [out, retval] long *pLong);
};

[object, uuid("9E66A293-4365-11D2-A997-00C04FA37DDB")]
__interface ICustomDispatch : public IDispatch {
   HRESULT Dispatch([in] long l, [out, retval] long *pLong);
};

[   coclass, default(ICustomDispatch), source(IDual), uuid("9E66A294-4365-11D2-A997-00C04FA37DDB")
]
class CClass : public ICustom, public IDual, public ICustomDispatch {
   HRESULT Custom(long l, long *pLong) { return(S_OK); }
   HRESULT Dual(long l, long *pLong) { return(S_OK); }
   HRESULT Dispatch(long l, long *pLong) { return(S_OK); }
};

int main() {
#if 0 // Can't instantiate without implementations of IUnknown/IDispatch
   CClass *pClass = new CClass;

   long llong;

   pClass->custom(1, &llong);
   pClass->dual(1, &llong);
   pClass->dispinterface(1, &llong);
   pClass->dispatch(1, &llong);

   delete pClass;
#endif
   return(0);
}

Исходный атрибут также содержит пример использованияdefault.

Требования

Контекст атрибута Значение
Относится к class, элемент structданных
Повторяемый No
Обязательные атрибуты coclass (при применении к class или struct)
Недопустимые атрибуты None

Дополнительные сведения см. в разделе Контексты атрибутов.

См. также

Атрибуты IDL
Атрибуты классов
coclass