怎么理解c++中的类和对象,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。c++类的由来(或者说为什么要增加类):我们知道C语言是面向过程的语言,c++是即面向过
怎么理解c++中的类和对象,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。
c++类的由来(或者说为什么要增加类):我们知道C语言是面向过程的语言,c++是即面向过程又是面向过程的语言。那么这两个有着什么样的区别和联系呢?
接下来我们利用c语言的struct来说明:
C 语言中,结构体中只能定义变量。 在 C++ 中,结构体内不仅可以定义变量,也可以定义函数。 例如:如果我们用C语言实现一下的功能,那么我们会发现,在struct内我们只能去定义一些变量 的类型,而我们需要的函数反而要去单独去实现
typedef struct Student {char _name[20];int _age;char _sex[10];}student; void SetStudentInfo(const char* name, const char* sex, int age) {strcpy(_name, name);strcpy(_sex, gender);_age = age; } void print(student *s) {printf("%c:%age-%c", s->_name, s->_age, s->_sex); }
在c++内实现的话是:
// 这里是为了和c语言做出区别所以将函数的定义也直接放到结构体内作为内联函数,如果函数的定义代码很多或者需要调用的次数多建议此处就只进行声明,之后在单独进行定义struct Student { void SetStudentInfo(const char* name, const char* sex, int age) {strcpy(_name, name);strcpy(_sex, gender);_age = age; } void print(student *s) {printf("%c:%age-%c", s->_name, s->_age, s->_sex);//此处为了区别和c语言struct的不同点利用了c语言的输出方法 } char _name[20];int _age;char _sex[10];};
从上述例子我们可以看出在c++中struct可以包含函数的定义和变量,反观在c语言内struct就只能包含变量。
在c++中我们引入一个关键词class来指定指定这种既可以包含变量又可以包含函数声明的类型即为c++的类。struct在c++中也是类但是和class修饰还是有一些区别。我们用上述代码来说明这个区别:
这是struct修饰的类
struct Student { void SetStudentInfo(const char* name, const char* sex, int age); void print(student *s) char _name[20];int _age;char _sex[10];}
这是class修饰的类
struct Student {public:void SetStudentInfo(const char* name, const char* sex, int age); void print(student *s) private: char _name[20];int _age;char _sex[10];}
在类中我们保护我们我们的数据,我们引入三种修饰:public
、private
、protected
,这三个关键词代表着不同的权限。
而struct默认的是成员函数和成员变量都是public,而class修饰的话成员函数和成员变量都是必须给予修饰的,一般我们是将成员函数用public修饰而成员变量我们用private修饰。
看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注编程网其他教程频道,感谢您对编程网的支持。
--结束END--
本文标题: 怎么理解C++中的类和对象
本文链接: https://www.lsjlt.com/news/305313.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
下载Word文档到电脑,方便收藏和打印~
2024-03-01
2024-03-01
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0