在我学习C++的旅程开始时,我认为一个对象是一个仅与OOP相关的术语.但是,我学的越多,我阅读的越多,我就会发现情况并非如此,我可以发现"对象"一词具有更广泛的含义.我在网上看了很多材料,但我还没找到清楚/坚实的东西.可能是我无法到达正确的地方.我可以得到标准,它有很好的段落,但你可能知道标准语言有点困难.而且信息通常太分散了.
我的问题:请您用简单的英语向我展示OOP世界之外的C++中的对象是什么?或者至少指出我在哪里可以找到一些好的,具体的,简单易读的.
如果你downvote请留下评论.这也是学习的源泉
我有以下课程:
#include <iostream>
#include <string>
using namespace std;
class CLS
{
int value;
string str_value;
public:
CLS(int param) { value = param; }
CLS(string param)
{
str_value = param;
}
};
int main()
{
CLS a(2);
CLS b = 3;
CLS c("4");
CLS d = "5"; // Error: invalid conversion from 'const char*' to 'int'
}
Run Code Online (Sandbox Code Playgroud)
我搜索了没有运气的错误原因.
用字符串文字构造是否正确?如果不是,为什么?如果是的话,我的代码出了什么问题?
我使用gcc 5.3与Code :: Blocks 16.1.
我试图说服一个朋友,这struct只是class现代C++中的一个.经过大量的争论和资源交换(包括一些SO Q&A)后,我想出了一个通过代码证明它的想法,所以我写道:
class A {};
struct B {};
int main()
{
cout << (is_class<A>::value ? "Yes" : "No") << "\n"; // output Yes
cout << (is_class<B>::value ? "Yes" : "No") << "\n"; // output Yes
cout << (is_same<A,B>::value ? "Yes" : "No") << "\n"; // output No ???
}
Run Code Online (Sandbox Code Playgroud)
如您所见,我对第三cout行输出感到惊讶.所以,我现在被困在这里,我不知道我是否正确.
是struct一个class或不?
为什么代码显示两个不同的东西?
更新:
我很清楚struct和class之间有什么区别.令我感到困惑的是答案之间的区别is_class和is_same答案.如果不在这里问我该怎么办?这个网站是为了什么?为什么有些用户倾向于提出问题是没有用的,甚至没有评论来指明它不符合要求政策?
请记住,我们并非所有人都会说流利的英语.并非所有人都有多年的经验.
感谢所有回答或评论的人.