typedef与using、struct与class的区别

本文详细探讨了C++中typedef与using的区别,以及struct与class的不同之处。通过具体示例说明了它们在类型别名定义上的细微差别,尤其是在模板别名的定义上。此外,还分析了struct和class在成员变量默认访问级别上的不同。

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

typedef与using区别
  • 定义一般类型的别名没区别,都是用来简化代码。如typedef string::size_type str_sz,将string::size_type类型命名为str_sz,类型名在前,别名在后;而using的用法为using str_sz=string::size_type,别名在前,类型名在后;
  • 定义模板的别名,只能使用using。如:using cell = pair<void*, cell*>
struct与class的区别
  • 默认的数据成员访问权限
    struct是public的,class是private的。即不加访问限定符时,struct结构体内的成员默认都是共有的,可访问的(public),而class结构体内的成员默认私有(private),如:
struct student{
void getName(string _name);//默认public
void getAge(int _age);//默认public
private:
string name;
int age;
}

class student{
string name;//默认private
int age;//默认private
public:
void getName(string _name);
void getAge(int _age);
}
  • class可用于定义模板参数,就像“typename”。但struct不用于定义模板参数。

总的来说,struct和class一般情况下功能是差不多的,但我认为struct偏向于结构体(数据结构),而class更像定义一个对象,另外,虽然二者可以通过访问控制来分辨,但编程序时的优良习惯应该是加上访问控制符(public、private、protected),而不是靠默认,这样会增加代码的整洁性和易读性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值