详解C++之类和对象(1)

 更新时间:2021年11月10日 17:09:10   作者:LUYAO_LY  
类是创建对象的模板,一个类可以创建多个对象,每个对象都是类类型的一个变量;创建对象的过程也叫类的实例化。每个对象都是类的一个具体实例(Instance),拥有类的成员变量和成员函数

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就只能包含变量。

struct和class的区别

在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];
}

在类中我们保护我们我们的数据,我们引入三种修饰:publicprivateprotected,这三个关键词代表着不同的权限。

而struct默认的是成员函数和成员变量都是public,而class修饰的话成员函数和成员变量都是必须给予修饰的,一般我们是将成员函数用public修饰而成员变量我们用private修饰。

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注脚本之家的更多内容!

相关文章

  • C++模拟实现List迭代器详解

    C++模拟实现List迭代器详解

    list不同于其他容器,他是一个链表,物理地址并不连续。所以在实现list类的迭代器的时候,需要将迭代器单独封装到一个类里,因为需要重载很多操作符来跟其他容器的迭代器使用达成一致
    2022-04-04
  • c++访问修饰符与继承关系详解

    c++访问修饰符与继承关系详解

    C++提供了三个修饰符来限定类成员的被访问权限,分别是public、protected、private,通过限定访问权限,可以达到程序编写者想要解决的安全问题和权限问题,本文给大家介绍c++访问修饰符与继承关系,感兴趣的朋友一起看看吧
    2023-10-10
  • C++ 压缩文件及文件夹方法 使用zlib开源库

    C++ 压缩文件及文件夹方法 使用zlib开源库

    下面小编就为大家分享一篇C++ 压缩文件及文件夹方法 使用zlib开源库,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-03-03
  • c++11中的noexcept关键字

    c++11中的noexcept关键字

    这篇文章主要介绍了c++11中的noexcept关键字,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-07-07
  • c++中#include <>与#include""的区别详细解析

    c++中#include <>与#include""的区别详细解析

    <>先去系统目录中找头文件,如果没有在到当前目录下找。所以像标准的头文件 stdio.h、stdlib.h等用这个方法
    2013-10-10
  • C语言数据结构之迷宫问题

    C语言数据结构之迷宫问题

    这篇文章主要为大家详细介绍了C语言数据结构之迷宫问题,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-03-03
  • C语言函数栈帧的创建和销毁详解

    C语言函数栈帧的创建和销毁详解

    这篇文章主要为大家详细介绍了C语言函数栈帧的创建和销毁,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-02-02
  • C语言实现在windows服务中新建进程的方法

    C语言实现在windows服务中新建进程的方法

    这篇文章主要介绍了C语言实现在windows服务中新建进程的方法,涉及C语言进程操作的相关技巧,需要的朋友可以参考下
    2015-06-06
  • C/C++ INI文件操作实现代码

    C/C++ INI文件操作实现代码

    本文章主要为分享C/C++ INI文件操作实现代码,增加注释和修复了一些问题。这里给出完整的实现文件,在需要的地方包含该头文件就好了
    2020-02-02
  • C++17使用折叠表达式实现一个IsAllTrue函数的过程

    C++17使用折叠表达式实现一个IsAllTrue函数的过程

    本文介绍了利用C++17特性实现IsAllTrue函数的方法,详细讲解了从基于初始化列表的初级版本到使用折叠表达式和类型萃取的高级优化版本,需要的朋友参考下吧
    2024-09-09

最新评论