服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - C/C++ - C语言类的基本语法详解

C语言类的基本语法详解

2022-08-29 15:32Jiawen_captial C/C++

大家好,本篇文章主要讲的是C语言类的基本语法详解,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下,方便下次浏览

1、由C语言的结构体进入到C++中的类

我们在C语言中当需要定义多个变量的数据集合时,第一时间会想到使用结构体来进行定义,例如我们定义一个学生变量,包含姓名、年龄、性别等信息,代码示例如下:

?
1
2
3
4
5
struct Student{
    char name[12];
    int age;
    char sex[4];
};

但是到了C++用,由于C++面向对象的语法特性,给struct关键字进行了升级,不仅仅可以在struct中定义变量,还可以定义函数,也由此可利用struct来定义一个学生类。代码示例如下:

?
1
2
3
4
5
6
7
8
9
10
11
struct Student{
    char name[12];
    int age;
    char sex[4];
    void show()
    {
        cout<<"姓名:"<<name<<endl;
        cout<<"年龄:"<<age<<endl;
        cout<<"性别:"<<sex<<endl;
    }
};

如上所示在C++中利用struct关键字定义了一个学生类,因为C++是兼容C的,所以该类在使用时,可以当作Student结构体来使用,也可以当作Student类来使用,(一定是在C++中!!!)两种使用如下:

?
1
2
3
4
//作Student结构体来使用
struct Student strs;
//作Student类来使用
Student clas;

2、C++中如何定义类?

C++中定义类的语法格式为class 类名;下面直接上代码示例:

?
1
2
3
4
5
class className
{
 // 类体:由成员函数和成员变量组成
 
}; // 一定要注意后面的分号

class为定义类的关键字,ClassName为类的名字,{}中为类的主体,注意类定义结束时后面分号。
类中的元素称为类的成员:类中的数据称为类的属性或者成员变量; 类中的函数称为类的方法或者成员函数。

3、C++中实例化一个对象

C++中对象的实例化可以理解成有一个类模具,根据这个类模具制造出来了许多与类中特性相同的产品。利用学生类实例学生对象,示例如下:

?
1
2
3
4
5
Student s1;
Student s2;
Student s3;
//s1、s2、s3这些都是类的实例化对象,一个类可以实例化无限个对象
//并且这些对象都是不相关的。

4、C++类的访问限定及其封装 C++中的访问限定符

C++实现封装的方式:用类将对象的属性与方法结合在一块,让对象更加完善,通过访问权限选择性的将其接口提供给外部的用户使用。

C++中的访问限定符有public、private、protected
1、public修饰的成员在类外可以直接被访问
2、protected和private修饰的成员在类外不能直接被访问(此处protected和private是类似的)
3、访问权限作用域从该访问限定符出现的位置开始直到下一个访问限定符出现时为止
4、class的默认访问权限为private,struct为public(因为struct要兼容C)

封装:将数据和操作数据的方法进行有机结合,隐藏对象的属性和实现细节,仅对外公开接口来和对象进行交互。(可以理解为被封装起来的数据只能在类中直接访问,在类外如果需要访问时,需要借助类中已经写好的函数来进行操作)对上面的学生类进行封装,代码示例如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
class Student{
private:
    char name[12];
    int age;
    char sex[4];
public:
    void show()
    {
        cout<<"姓名:"<<name<<endl;
        cout<<"年龄:"<<age<<endl;
        cout<<"性别:"<<sex<<endl;
    }
};

5、C++中类的作用域

类定义了一个新的作用域,类的所有成员都在类的作用域中。在类体外定义成员,需要使用 :: 作用域解析符指明成员属于哪个类域。如果要在类外实现类中声明的方法,要先进行::的操作,声明属于哪一个类。代码示例如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class Student{
private:
    char name[12];
    int age;
    char sex[4];
public:
    void show();
};
 
void Student:: show
{
        cout<<"姓名:"<<name<<endl;
        cout<<"年龄:"<<age<<endl;
        cout<<"性别:"<<sex<<endl;
}

6、成员变量和方法在类中是如何存储的?

先来看一段代码:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class Student {
private:
    char name[12];
    int age;
    char sex[4];
public:
    void show();
};
int main()
{
 
    Student s1;
    cout<<sizeof(s1)<<endl;
    return 0;
}
结果如图所示:

C语言类的基本语法详解

为什么会是二十哪?show函数的存储不在类中吗?
正是如此!一个类的大小,实际就是该类中”成员变量”之和,当然也要进行内存对齐,注意空类的大小,空类比较特殊,编译器给了空类一个字节来唯一标识这个类。而类中的方法都被放到类外的同一块空间,这样做是避免在实例化对象的时候,放在方法的重复定义开辟不必要的内存空间,造成空间浪费。

总结

到此这篇关于C语言类的基本语法详解的文章就介绍到这了,更多相关C语言类的语法内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://blog.csdn.net/weixin_51692487/article/details/122522470

延伸 · 阅读

精彩推荐
  • C/C++浅析C语言调试器GDB和LLDB的使用方法

    浅析C语言调试器GDB和LLDB的使用方法

    这篇文章主要介绍了C语言调试器GDB和LLDB的使用方法,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下...

    FANDX8662021-08-11
  • C/C++C语言小程序 如何判断三角型类型

    C语言小程序 如何判断三角型类型

    第一个判断三角形的类型,两个浮点型数据不能直接判断相等,为了输入方便一些,自己设置的精度比较低,10^(-3)...

    C语言教程网3192020-12-19
  • C/C++C++实现推箱子小游戏源码

    C++实现推箱子小游戏源码

    这篇文章主要为大家详细介绍了C++实现推箱子小游戏源码,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    小水瓶和大水瓶5152021-07-31
  • C/C++C语言实现影院管理系统

    C语言实现影院管理系统

    这篇文章主要为大家详细介绍了C语言实现影院管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    盈小盈*ZERO5712021-08-10
  • C/C++C++实现查找中位数的O(N)算法和Kmin算法

    C++实现查找中位数的O(N)算法和Kmin算法

    这篇文章主要介绍了C++实现查找中位数的O(N)算法和Kmin算法,对于C++程序算法设计有一定的借鉴价值,需要的朋友可以参考下...

    C++教程网5802021-02-03
  • C/C++详解c++中的类型识别

    详解c++中的类型识别

    这篇文章主要介绍了 详解c++中的类型识别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小...

    PRO_Z10942021-09-14
  • C/C++C语言实现简易网络聊天室

    C语言实现简易网络聊天室

    这篇文章主要为大家详细介绍了C语言实现简易网络聊天室,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    菠萝小马哥6772021-11-19
  • C/C++详解c++ 继承

    详解c++ 继承

    这篇文章主要介绍了c++ 继承的相关资料,文中讲解非常细致,代码帮助大家更好的理解和学习,感兴趣的朋友可以了解下...

    菜鸟教程4772021-09-16