C++高级语法知识

本文深入探讨了C++中的类型别名概念,包括变量别名、结构体别名以及与平台无关类型的定义。通过实例展示了typedef如何简化复杂类型的声明,并对比了typedef与#define的差异。此外,还介绍了类模板与函数模板的使用,提供了具体的代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

类与结构体别名

https://www.cnblogs.com/csyisong/archive/2009/01/09/1372363.html

1.变量别名

char* pa, pb; // 这多数不符合我们的意图,它只声明了一个指向字符变量的指针和一个字符变量

改写:

typedef char* PCHAR;PCHAR pa, pb;   //两个字符指针变量

2. 结构体别名

typedef struct tagPOINT
{int x;int y;
}POINT;

POINT p1

3. 用typedef来定义与平台无关的类型

标准库就广泛使用了这个技巧

typedef double REAL

然后,REAL 可以用于替代double

4. 为复杂的声明定义一个新的简单的别名

typedef 与 #define的区别:

案例一:

通常讲,typedef要比#define要好,特别是在有指针的场合。请看例子:

typedef char *pStr1;

#define pStr2 char *;

pStr1 s1, s2;

pStr2 s3, s4;
在上述的变量定义中,s1、s2、s3都被定义为char *,而s4则定义成了char,不是我们

所预期的指针变量,根本原因就在于#define只是简单的字符串替换而typedef则是为一

个类型起新名字。

类模板与函数模板 (template )

template <class T>    //函数模板

T min(T x,T y)

{ return(x<y)?x:y;}

template<class T>    //类模板

class A{T g(T a,T b); A();}

案例:字典加载。

重载:(待有机会补充)

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值