类是创建对象的模板,一个类可以创建多个对象,每个对象都是类类型的一个变量;创建对象的过程也叫类的实例化。每个对象都是类的一个具体实例(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];
}
在类中我们保护我们我们的数据,我们引入三种修饰:public
、private
、protected
,这三个关键词代表着不同的权限。
而struct默认的是成员函数和成员变量都是public,而class修饰的话成员函数和成员变量都是必须给予修饰的,一般我们是将成员函数用public修饰而成员变量我们用private修饰。
总结
本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注编程学习网的更多内容!
本文标题为:详解C++之类和对象(1)


- Easyx实现扫雷游戏 2023-02-06
- c++ const 成员函数,返回一个 const 指针.但是返回的指针是什么类型的 const? 2022-10-11
- ubuntu下C/C++获取剩余内存 2023-09-18
- C++ 数据结构超详细讲解顺序表 2023-03-25
- C语言qsort()函数的使用方法详解 2023-04-26
- C语言详解float类型在内存中的存储方式 2023-03-27
- 详解C语言中sizeof如何在自定义函数中正常工作 2023-04-09
- 我应该为我的项目使用相对包含路径,还是将包含目录放在包含路径上? 2022-10-30
- Qt计时器使用方法详解 2023-05-30
- C语言手把手带你掌握带头双向循环链表 2023-04-03