可以。在C++中,类的数据成员,可以是任何合法的变量类型,所以同样可以是结构体。
如:
struct S1{
int a;
};//定义结构体。
class C1
{
public:
S1 A;//结构体成员。
int b;//普通成员。
};
int main()
{
C1 c;
cAa=100;
cb=200;
return 0;
}
以上代码就是一个结构体变量做数据成员的例子,在任何C++编译器中都是合法的。
写成这样是想告诉读者,这个“类”是一个数据结构,并且成员是公开访问的。
如果写成类的话就要写成
class Node
{
public:
T data;
};效果一样但没有上面那样整洁。
一般,我们把纯粹的数据结构类使用struct定义。而抽象出的具有行为的类定义为class。当然只是个习惯,或者说代码风格。或者技术约定。至于你究竟想怎样用,无所谓。
但是如果要写在linklist里,你也应该把整个结构:
class linklist
template <class T>
struct Node{
T data;
Node<T> next;
};
public:
};
这样。这样做不好的地方在于,我重写了一个list,具有环状结构。
class rolllist
{
Node<T> first;
}
这时我就不得不重新写一个node结构。而且这个结果与linklist一样一样的。只不过 *** 作有所不同。
如果要直接把T data放在list。你就会犯一个严重错误。
节点是节点,链表是链表,把两个属性放在一起,你觉得这是个啥?
首先搞清楚,链表与节点是聚合关系。
我们就可以得到关系 list=∑node。所以list ≠ node。不能放在一起!java中用类代替了C语言的结构体
javaio包里有个相应的类,可以把任何类写到文件中去,相关的有
ObjectOutputStream 和 FileOutputStream,自己去看吧struct A
{
struct B
{
int x;
};
B foo()
{
B b = {1};
return b;
}
};
A::B b = A::foo();
----
一样。不过在嵌套的类或者结构体可以互相访问对方的任何内容,不过这个只是文法上的区别。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)