c++中类的数据成员可以是结构体吗?

c++中类的数据成员可以是结构体吗?,第1张

可以。在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();
----
一样。不过在嵌套的类或者结构体可以互相访问对方的任何内容,不过这个只是文法上的区别。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/13373767.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-23
下一篇 2023-07-23

发表评论

登录后才能评论

评论列表(0条)

保存