关于c++的class和struct的不同可以简单归纳为以下几点:

内部成员变量及成员函数的默认防控属性不同

struct默认防控属性是public,而class默认的防控属性是Private

继承关系中的默认防控属性的区别

在继承关系中,struct默认是public,而class是private

在继承中的基类和子类之间的继承方式

继承方式 基类的public成员 基类的protected成员 基类中的private成员
public继承 仍为public成员 仍为protected成员 不可见
protected继承 变为protected成员 变为protected成员 不可见
private继承 变为private成员 变为private成员 不可见

模板中使用

class关键字可以用于定义模板参数,但是struct不行

template<template T, class Y>

int Func(const T& t, const Y& y)
{
    ...
}

使用花括号{}赋值问题

  • struct如果没有定义构造函数,可以使用花括号对struct成员进行赋值。
  • struct中如果定义了一个构造函数,则不能使用花括号进行赋值