struct与class的区别(含struct空类型的内存分析)

1.

struct定义一个结构体成员变量和成员函数的默认访问权限为public。

class定义一个结构体成员变量和成员函数的默认访问权限为private。

struct更适合看成是一个数据结构的实现体。

class更适合看成是一个对象的实现体。

class”这个关键字还用于定义模板参数,就像“typename”。但关键字“struct”不用于定义模板参数。

在cpp中对两者的初始化不同,struct类型可以以test a = {...}形式初始化,class则不行。

struct test
{
    int s;
    int v;
};
class test1
{
    int s;
    int v;
};
int main()
{

    test a  = {10,20};
    a.s = 10;a.v = 20;

    test1 a = {10,20};//error 不允许使用{...}形式对test1类型的对象进行初始化
    return 0;
}

那为什么我们在上面仅仅将struct改成class,{}就不能用了呢?

其实问题恰巧是我们之前所讲的——访问控制!你看看,我们忘记了什么?对,将struct改成class的时候,访问控制由public变为 private了,那当然就不能用{}来赋初值了。加上一个public,你会发现,class也是能用{}的,和struct毫无区别!!! 

2.

struct空结构体占用的内存问题

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值