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

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/li_zi_ang1354/article/details/82983194

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空结构体占用的内存问题

猜你喜欢

转载自blog.csdn.net/li_zi_ang1354/article/details/82983194