加一些补充
在模版中,类型参数前面可以使用class或typename,如果使用struct,则含义不同,struct后面跟的是“non-type template parameter”,而class或typename后面跟的是类型参数。
class和struct如果定义了构造函数的话,都不能用大括号进行初始化
如果没有定义构造函数,struct可以用大括号初始化。
如果没有定义构造函数,且所有成员变量全是public的话,可以用大括号初始化。
《转》
struct 和 class 都支持继承性,这点上没有区别。试一下下面的程序就知道了。
struct Base
{
public:
virtual void print() {cout << "Base" << endl;}
};
struct Derived : public Base
{
virtual void print() {cout << "Derived" << endl;}
};
int main(int argc, char* argv[])
{
Derived d;
Base *pb = &d;
pb->print();
return 0;
}
加一些补充
在模版中,类型参数前面可以使用class或typename,如果使用struct,则含义不同,struct后面跟的是“non-type template parameter”,而class或typename后面跟的是类型参数。
class和struct如果定义了构造函数的话,都不能用大括号进行初始化
如果没有定义构造函数,struct可以用大括号初始化。
如果没有定义构造函数,且所有成员变量全是public的话,可以用大括号初始化。
《转》
可以用大括号括起来的叫aggragate type。无论class还是struct都可以。条件是没有base class,没有子定义constructor,没有virtual function,没有private和protected成员。