C语言类的基本语法详解

目录
  • 1、由C语言的结构体进入到C++中的类
  • 2、C++中如何定义类?
  • 3、C++中实例化一个对象
  • 4、C++类的访问限定及其封装 C++中的访问限定符
  • 5、C++中类的作用域
  • 6、成员变量和方法在类中是如何存储的?
  • 总结

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

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

struct Student{
	char name[12];
	int age;
	char sex[4];
};

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

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++中!!!)两种使用如下:

//作Student结构体来使用
struct Student strs;
//作Student类来使用
Student clas;

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

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

class className
{
 // 类体:由成员函数和成员变量组成

}; // 一定要注意后面的分号

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

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

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

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)

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

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++中类的作用域

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

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、成员变量和方法在类中是如何存储的?

先来看一段代码:

class Student {
private:
	char name[12];
	int age;
	char sex[4];
public:
	void show();
};
int main()
{

	Student s1;
	cout<<sizeof(s1)<<endl;
	return 0;
}
结果如图所示:

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

总结

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

(0)

相关推荐

  • C语言 基本语法示例讲解

    C 基本语法 我们已经看过 C 程序的基本结构,这将有助于我们理解 C 语言的其他基本的构建块. C 的令牌(Tokens) C 程序由各种令牌组成,令牌可以是关键字.标识符.常量.字符串值,或者是一个符号.例如,下面的 C 语句包括五个令牌: printf("Hello, World! \n"); 这五个令牌分别是: printf ( "Hello, World! \n" ) ;  分号 ; 在 C 程序中,分号是语句结束符.也就是说,每个语句必须以分号结束.它表

  • C语言函数语法详解

    1.概述 在C语言中,函数是来完成子程序或者某个模块的功能.有主程序或者其他函数调用,其他函数之间可以相互调用.同一函数可以被一个或多个函数任意次调用. 注意:     a.一个C程序有一个或多个程序模块组成,每一个程序模块作为一个源程序文件.一个源文件可以为多个C程序共用.     b.程序在编译时是以源文件为单位进行编译,而不是以函数为单位进行编译.一个源文件就是一个编译单元     c.C程序的执行是从main函数开始,也是在main函数中结束整个程序     d.所有函数是平行的,即在定

  • C语言的基本语法详解

    目录 1.标识符与关键字 2.常量和符号常量 (1)常量和常量符号 (2)变量 3.C语言数据类型 (1)整型常量 整型变量 原码.反码和补码 (2)实型数据 实型常量 实型变量 实型变量的定义以及初始化 (3)字符型数据 ASCII码 字符型变量 转义字符字符 字符串常量 字符串变量 总结 1.标识符与关键字 给变量所取的名字叫变量名,定义变量的名字需要遵循标识符的命名规则. 标识符是用来标识变量.符号常量.数组.函数.文件等名字的有效字符序列. 标识符的命名规则: 1.只能由字母.数字和下划

  • C语言类的基本语法详解

    目录 1.由C语言的结构体进入到C++中的类 2.C++中如何定义类? 3.C++中实例化一个对象 4.C++类的访问限定及其封装 C++中的访问限定符 5.C++中类的作用域 6.成员变量和方法在类中是如何存储的? 总结 1.由C语言的结构体进入到C++中的类 我们在C语言中当需要定义多个变量的数据集合时,第一时间会想到使用结构体来进行定义,例如我们定义一个学生变量,包含姓名.年龄.性别等信息,代码示例如下: struct Student{ char name[12]; int age; ch

  • C语言ASM汇编内嵌语法详解

    3 GCC Inline ASM GCC 支持在C/C++代码中嵌入汇编代码,这些汇编代码被称作GCC Inline ASM--GCC内联汇编.这是一个非常有用的功能,有利于我们将一些C/C++语法无法表达的指令直接潜入C/C++代码中,另外也允许我们直接写 C/C++代码中使用汇编编写简洁高效的代码. 1.基本内联汇编 GCC中基本的内联汇编非常易懂,我们先来看两个简单的例子: __asm__("movl %esp,%eax"); // 看起来很熟悉吧! 或者是 __asm__(&q

  • 基于JS脚本语言的基础语法详解

    JS脚本语言的基础语法:输出语法  alert("警告!");  confirm("确定吗?");   prompt("请输入密码");为弱类型语言: 开始时要嵌入JS代码:<script type="text/javascript"></script>: 关于写程序是需注意的基本语法: 1.所有的字符全都是英文半角的: 2.大部分情况下每条语句结束后要加分号: 3.每一块代码结束后加换行:4.程序前呼

  • C语言自研定时器计划任务语法详解

    目录 为啥要自研 语法格式 执行计划 符号 模式 语法演示 基本操作 符号操作 模式操作 头文件 实现文件 为啥要自研 市面主流定时器计划任务语法: cron ,但是使用起来非常难受,设计的比较非人性话语法,我想一般人都没几个记住的,都是靠在线生成工具进行使用的,而且只能持续执行不是有限执行,下面举几个cron的案例: 具体想了解的可以自行百度,我试图记住语法,但是因为太混乱了,时间一长就忘了,没法只能到网上工具里生成,而且很多有限的场景没法生成因为cron不支持只执行几次或者有规律的执行,为了

  • JS定义类的六种方式详解

    在前端开发中,经常需要定义JS类.那么在JavaScript中,定义类的方式有几种,分别是什么呢?本文就JS定义类的六中方式说明如下(案例说明): 1.工厂方式 function Car(){ var ocar = new Object; ocar.color = "blue"; ocar.doors = 4; ocar.showColor = function(){ document.write(this.color) }; return ocar; } var car1 = Car

  • Android Kotlin开发实例(Hello World!)及语法详解

    Android Kotlin开发实例及语法详解 前言 Kotlin是一种在 Java虚拟机上执行的静态型别编程语言,它主要是由俄罗斯圣彼得堡的JetBrains开发团队所发展出来的编程语言.该语言有几个优势 1. 简洁 它大大减少你需要写的样板代码的数量. 2. 安全 避免空指针异常等整个类的错误. 3. 通用 构建服务器端程序.Android 应用程序或者在浏览器中运行的前端程序. 4. 互操作性 通过 100% Java 互操作性,利用 JVM 既有框架和库. 配置 在我们的AndroidS

  • C++语法详解之封装、构造函数、析构函数

    大家先了解下什么是构造函数,什么是析构函数,作用是什么? 构造函数(方法)是对象创建完成后第一个被对象自动调用的方法.它存在于每个声明的类中,是一个特殊的成员方法.作用是执行一些初始化的任务.Php中使用__construct()声明构造方法,并且只能声明一个. 析构函数(方法)作用和构造方法正好相反,是对象被销毁之前最后一个被对象自动调用的方法.是PHP5中新添加的内容作用是用于实现在销毁一个对象之前执行一些特定的操作,诸如关闭文件和释放内存等. 下面在通过具体例子看下C++语法详解之封装.构

  • javascript中正则表达式语法详解

    好久都没有写博客了,主要是太懒了,尤其是在阳春三月,风和日丽的日子,太阳暖暖的照在身上,真想美美的睡上一觉.就导致了这篇博客拖到现在才开始动笔,javascript的正则这一块也不是什么新的东西,主要是以前本人一遇到写正则的需求就开始头大,头疼,网上剽窃,东拼西凑,反正就是各种不适应,所以我打算系统的把正则表达式看一遍,一来是自己有所提升,这一块知识点的查漏补缺,二来是给大家分享一下.好了,下面我们直接进入主题: 正则是匹配字符串特定模式的一种表达式,官方是这样说的,但我的理解不外乎就是匹配字符

  • R语言基本对象类型知识点详解

    基本向量 包含单类型对象(例如整数,浮点数,复数,文本,逻辑值或者原始型数据)的向量 复合对象 包含一些列基本向量的数据结构,例如列表,配对列表,``S4对象或者环境. 这些对象的特性各不相同,但它们都包含一系列命名的对象 特殊对象 在R编程中服务于特定目的的对象,例如any,NULL和...等. 这类对象在特定的环境中具有十分重要的意义,但是无法创建一个属于该类型的对象 R语言 R代码,其被执行后可以返回其他对象 函数 R的引擎; 其以参数作为输入,同时返回一些对象作为输出 有时候,函数会修改

  • Python入门之基础语法详解

    一.我的经历及目标 在学习python之前:我学习过C/C++,在学校期间做过很多的项目,已经有两年多了,算是对C/C++非常的熟悉了,精通不敢说,但是对于面向过程和面向对象有很深刻的认识,做过很多的开发,学习数据库,MFC, QT, linux下利用C/C++进行服务器的开发,QT环境下进行模拟QQ的开发- 听说python挺火的,我也来尝试一门新的语言,python和c有80%的相似性,毕竟是用C来开发的语言,但是是面向过程的一门语言,有C++的继承等相似的特性,感觉更有信心学会它了,毕竟可

随机推荐