+ 32
I can not understand difference between Class and Struct.
42 odpowiedzi
+ 34
1. class has the members as private by default but structure has public..
2. class is a refrence type datatype while structure is a value type datatype.
3. class can be inherite but structure can not be.
4.class can support virtual methods but structure can not support virtual methods.
5.class provide the security of private data but structure can not provide.
6. class provide the feature of hiding the data but structure doesn't provide..
+ 34
Most of these answers are wrong. There's only one difference between classes and structs and that's default access specifiers.
struct CStruct
{
int Var; //public
};
class CClass
{
int Var; //private
};
Both can be passed by value and by reference. Both can contain functions and access specifiers. Both can inherit and be inherited from.
As an example, in the Direct3D 9 helper library, there's a struct for 3D vectors that just has three floats in it, but if it detects that you're compiling for C++ instead of C, it'll add several functions to the struct for dot/cross products, operator overloading, etc.
Another example can be found when dealing with IO Completion Ports in Windows, often used with networking. In it, there's a struct called OVERLAPPED that contains some synching variables Windows uses to keep track of when the call completes, but you can overload that class and bundle more information in (such as buffer address or sender/receiver ID) making the whole system significantly less complicated.
+ 14
class has default private members, structure has default public members.
members of structure in memory are one beside another for faster access to them.
+ 12
OMG!!! I can't believe that most of you don't know the difference of class and struct :0!!! The only difference is that the default access privilege of members for struct is public instead class is private. Everything else is exactly the same. Struct CAN be inherited, it CAN have virtual function!!!
+ 8
@Vinay your answer is correct for c# language. in c++ the correct behaviour is explained by user @nemo
See the page that shows the differences like this between c++ and c#.
https://msdn.microsoft.com/en-us/library/yyaad03b(v=vs.90).aspx
Another interesting issue in C++ is slicing, it doesn't exist in c# but exists in c++. see here http://stackoverflow.com/questions/274626/what-is-object-slicing
+ 7
2, 3, 4, 5, and 6 of the best rated answer are FALSE!
+ 7
"By definition, a struct is a class in which members are by default public; that is,
struct s{ ...
is simply shorthand for
class s{ public: ...
...Except for the different names, the following
declarations are equivalent:
class Date1{
int d, m, y;
public:
Date1(int dd, int mm, int yy) ;
void add_year(int n) ; / / add n years
};
struct Date2{
private:
int d, m, y;
public:
Date2(int dd, int mm, int yy) ;
void add_year(int n) ; / / add n years
};
Which style you use depends on circumstances and taste."
SOURCE: Bjorne Stroustrup - The C++ Programming Language - Cap: 10.2.8 Structures and Classes [class.struct]
+ 6
@Vinay That's the worst answer ever! With all that likes you are just making the community follow your mistakes. I suggest that you erase your answer for the good of the people in here that are LEARNING!
Sorry about my poor english.
+ 5
there are different reasons to differentiate class and structure in languages like:
1. in C language,class is not there.
2. in java ,structure is not there.
3. in c++,class has all members as private by default..in structure all members are public by default.
so basically,difference is compiler dependent..;)
+ 3
top most answer cannot be correct always ! Pls check other responses too
+ 2
class has default private members, structure has default public members.
this is the basic diff
+ 2
the only difference between class and structure is (in case of c++ ) default access to the members which is private in class and public for structure....
+ 2
@ismail Try the app "duolingo", it's free and very good. :)
+ 1
In absence of an access-specifier for a base class, public is assumed when the derived class is declared struct and private is assumed when the class is declared class
+ 1
they provide different security level.. struct can be accessed by any user but classes can not be used by anyone until defined public..
+ 1
claas contains both data as well as method but structcontains data only
+ 1
@Vinay don't give people wrong answer!!!
As far as the compiler is concerned, there is no difference between struct and class other than the default accessibility. They're just two different keywords for defining the same thing. So, structs can have constructors, destructors, base classes, virtual functions, everything.
As far as programmers are concerned, it's a common convention to use struct for classes with none of those things (specifically which are POD), or to go even further and use struct only for classes with no user-defined member functions at all, only public data members. People sometimes mess this convention up, because it's surprisingly easy to think a class is POD when it isn't, but at least they're trying.
In C++, at least, information hiding is absolutely nothing to do with security. Put that right out of your mind. It does not provide any security, except in the same general way that any good coding practice makes for code that's easier to reason about, and hence programmers make fewer mistakes.
The purpose of information hiding is to allow you to change the implementation later, perhaps to remove or rename private members, safe in the knowledge that none of the users of your class, outside the class itself and friends, is referring to them. Obviously it's useful to do exactly that, but less obviously and perhaps more importantly, its useful because it makes explicit in the code what your class's interface is, that you want clients to use, and that users of your class can rightfully expect to work. You can achieve the same thing in principle with documentation, but in practice it's nice for the compiler to enforce the rules.
It's not "secure" because on any given compiler it's possible to work around public/private protection. But if users of your class do that, they're using some grotesque hack, they deserve for their code to stop compiling/working when you change your class, and if they come to you to complain you can laugh at them.
http://stackoverflow.com/questions/3845564/s
+ 1
simple answer:
Differences between a class and a struct in C++ are that structs have default public members and bases and classes have default private members and bases. Both classes and structs can have a mixture of public and private members, can use inheritance and can have member functions.
0
My initial answer was wrong for C++ struct because I did not realize they were so vastly different to C struct. Apparently C++ modified the C struct so that it can behave almost the same as a class, except the default access modifier is public for members. This differs substantially from C struct, which had only data fields, no methods, unless you used virtual function pointers as data, no inheritance only unions, no overloading, no access control (encapsulation). C++ struct can be utilized in both the new and old form, but only the old form can use struct unions. To say that a C++ struct is ALWAYS the same as a class might therefore be incorrect. It depends if the C++ struct is implemented in the new or old style, particularly if unions are used, as that precludes the possibility of it behaving like a class. It is probably an infrequently occurring scenario, and continually decreasing in usage, but still worthy of note to be mindful of if encountered, especially in a legacy system.
0
A structure is just a structure containing different variables that are clustered together. Anyone with a pointer to the structure can manipulate its content at will. However, a class can be defined to have class members of different scope. Classes that are only meant to contain data in its member, are within the object oriented programming paradigm called entity classes and are the most closes to structures.
However, classes are usually used to create encapsulated functionality by disallowing direct manipulation of their members by using the private scope and thereby only make them accessible through implemented functions inside the class. So classes introduce functions for member manipulation while structures come usually without. Indicating that one can add function pointers to structures as well.
In order to extrapolate this even further, I can add that 'a struct variable is to an object as typedef struct is to a class.'