gpt4 book ai didi

c++ - 结构与类

转载 作者:IT老高 更新时间:2023-10-28 22:33:41 25 4
gpt4 key购买 nike

今天,我很想在 C++ 中找到结构和类之间的一些区别。所以,我发现了一些不同之处:

  1. 在结构中,默认情况下成员是公共(public)的,而在类中是私有(private)的。
  2. 默认情况下,结构的继承是公共(public)的,而在类的情况下是私有(private)的。
  3. 类可以参与模板,而结构不能。

点击这里查看 structtemplate 的情况下不能用来代替 class http://ideone.com/p5G57

template<struct T> void fun(T i)
{
cout<<i<<endl;
}

int main()
{
int i=10;
fun<int>(i);
return 0;
}

它给出了错误:

prog.cpp:4: error: ‘struct T’ is not a valid type for a template constant parameter
prog.cpp: In function ‘void fun(T)’:
prog.cpp:4: error: ‘i’ has incomplete type
prog.cpp:4: error: forward declaration of ‘struct T’
prog.cpp: In function ‘int main()’:
prog.cpp:12: error: no matching function for call to ‘fun(int&)’

但是,如果将 struct 替换为 class,则效果很好。见这里:http://ideone.com/K8bFn

除了以上这些差异之外,当我在代码中将 class 替换为 struct 时,代码可以完美运行而无需进行任何进一步的更改。

现在,我想知道,还有更多的差异,我错过了,我应该知道吗?

最佳答案

没有其他区别,但是您指定的第三个不正确:

Class can take part in template while structures cannot.

在模板的情况下,class 关键字只是语法糖,并不意味着类型必须是实际的类。通常,程序员更喜欢 typename 用于基本类型,class 用于类或结构,但这只是惯例。

除此之外,您可以同时使用 classstruct 来专门化模板。

关于c++ - 结构与类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11118919/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com