类设计器支持以下 C++ 代码元素 :
-
模板类
-
结构
-
Enum
-
宏(显示宏的处理后视图)
-
Typedef
-
模板类
类设计器支持直观显示模板类 。 支持嵌套声明。 下表列出了一些典型声明。
展开表
Code 元素 类设计器视图 template <class T>
class A {};
A<T>
模板类template <class T, class U>
class A {};
A<T, U>
模板类template <class T, int i>
class A {};
A<T, i>
模板类template <class T, template <class K> class U>
class A {};
A<T, U>
模板类下表列出了一些分部专用化示例。
展开表
Code 元素 类设计器视图 template<class T, class U>
class A {};
A<T, U>
模板类template<class T>
class A<T, T> {};
A<T, T>
模板类template <class T>
class A<T, int> {};
A<T, int>
模板类template <class T1, class T2>
class A<T1*, T2*> {};
A<T1*, T2*>
模板类下表列出了一些分部专用化继承示例。
展开表
Code 元素 类设计器视图 template <class T, class U>
class A {};
template <class TC>
class A<T, int> {};
class B : A<int, float>
{};
class C : A<int, int>
{};
A<T, U>
模板类B
类
(指向类 A)C
类
(指向类 A)下表列出了一些分部专用化模板函数示例。
展开表
Code 元素 类设计器视图 class A
{
template <class T, class U>
void func(T a, U b);
template <class T>
void func(T a, int b);
};
A
func<T, U>(+ 1 重载)template <class T1>
class A {
template <class T2>
class B {};
};
template<> template<>
class A<type>::B<type> {};
A<T1>
模板类B<T2>
模板类
(B 包含在类 A 中的“嵌套类型” 下)template <class T>
class C {};
class A : C<int> {};
A
类
-> C<int>C<T>
模板类下表列出了一些模板继承示例。
展开表
Code 元素 类设计器视图 template <class T>
class C {};
template<>
class C<int> {
class B {};
}
class A : C<int>::B {};
A
类
->BC<int>
类
(B 包含在类 C 中的“嵌套类型” 下)C<T>
模板类下表列出了一些规范专用化类连接示例。
展开表
Code 元素 类设计器视图 template <class T>
class C {};
template<>
class C<int> {};
class A : C<int> {};
class D : C<float> {};
A
类
->C<int>C<int>
类C<T>
模板类D
类
->C<float>class B {
template <class T>
T min (const T &a, const T &b);
};
B
min <T>类设计器中的 C++ 枚举
类设计器支持 C++
enum
和域化的enum class
类型。 下面是一个示例:C++复制
enum CardSuit {Diamonds = 1,Hearts = 2,Clubs = 3,Spades = 4 };// or... enum class CardSuit {Diamonds = 1,Hearts = 2,Clubs = 3,Spades = 4 };
类图中的 C++ 枚举形状的外观和工作原理与结构形状类似,只不过其标签显示为 Enum 或 Enum class,标签的颜色为粉色而不是蓝色,并且具有带颜色的边框左边和上边。 两种枚举形状和结构形状都具有方角。
有关使用
enum
类型的更多信息,请参阅枚举。类设计器中的 C++ Typedef
Typedef 语句可在某个名称和其基础类型之间创建一个或多个间接层。 “类设计器”支持使用关键字
typedef
声明的 C++ typedef 类型,例如:C++复制
typedef class coord {void P(x,y);unsigned x;unsigned y; } COORD;
然后你可以使用此类型来声明实例:
COORD OriginPoint;
类和结构形状
在“类设计器”中,C++ typedef 具有 typedef 中所指定类型的形状。 如果源声明
typedef class
,则形状具有圆角和标签“类”。 对于typedef struct
,形状具有方角和标签 Struct。类和结构可在自身内声明嵌套的 typedef。 在“类设计器”中,类和结构形状可将嵌套的 typedef 声明显示为嵌套的形状。
Typedef 形状支持右键单击菜单(关联菜单)中的“显示为关联”和“显示为集合关联”命令。
类 typedef 示例
C++复制
class B {}; typedef B MyB;
结构 typedef 示例
C++复制
typedef struct mystructtag {int i;double f; } mystruct;
未命名的 typedef
虽然可以声明没有名称的 typedef,但“类设计器”不会使用指定的标记名称。 “类设计器”使用“类视图”生成的名称。 例如,以下声明有效,但它在类视图和类设计器中显示为名为 __unnamed 的对象 :
C++复制
typedef class coord {void P(x,y);unsigned x;unsigned y; };
备注
“类设计器”不显示其源类型为函数指针的 typedef。