网站代理 正规备案,网站主页面布局怎么做,网站顶端大图怎么做,华为云建站和阿里云建站区别文章目录 前言第一部分#xff1a;C中的类1.类的定义2.成员变量#xff08;属性#xff09;3.成员函数#xff08;方法#xff09;4.访问修饰符私有受保护公有 5.构造函数和析构函数成员初始化列表方法重载 6.继承7.多态8.友元 第二部分#xff1a;.c与.h文件头文件… 文章目录 前言第一部分C中的类1.类的定义2.成员变量属性3.成员函数方法4.访问修饰符私有受保护公有 5.构造函数和析构函数成员初始化列表方法重载 6.继承7.多态8.友元 第二部分.c与.h文件头文件.h 或 .hpp类定义结构体定义枚举函数原型宏定义类型定义常量定义作用 源文件.c 或 .cpp函数实现全局变量定义局部静态变量的定义作用 优势模块化编译效率封装减少编译时间注意事项  总结 前言 
以上就是今天要讲的内容本文简单介绍了C中的类以及.c和.h文件的使用。 第一部分C中的类 
C中的类Class是面向对象编程OOP的核心概念之一。类是一种用户定义的数据类型它封装了数据成员通常称为属性或字段和成员函数通常称为方法或操作。以下是C类的基本组成部分和详细介绍 
1.类的定义 
类定义以关键字 class 开始后跟类名和类体类体被大括号 {} 包围。类定义通常包括私有private或保护protected成员以及公有public成员。 
class ClassName {
private:// 私有成员属性和方法
protected:// 保护成员属性和方法
public:// 公有成员属性和方法
};2.成员变量属性 
成员变量是类中定义的数据它们可以是任何类型包括基本类型、复合类型或用户定义的类型。 
class Person {
private:std::string name;int age;
};3.成员函数方法 
成员函数定义了类的行为它们可以访问类的成员变量。 
class Person {
public:void setName(const std::string newName) {name  newName;}std::string getName() const {return name;}void setAge(int newAge) {age  newAge;}int getAge() const {return age;}
};4.访问修饰符 
私有 
私有private只有类内部的方法可以访问私有成员。 
受保护 
保护protected保护成员与私有成员类似但它们可以被派生类访问。 
公有 
公有public公有成员可以被类的外部代码访问。 
5.构造函数和析构函数 
构造函数用于初始化类的对象而析构函数用于在对象生命周期结束时执行清理工作。 
class Person {
public:Person(const std::string name, int age) : name(name), age(age) {}~Person() {}// 其他成员...
};成员初始化列表 
在构造函数中成员初始化列表用于初始化成员变量。 
Person(const std::string name, int age) : name(name), age(age) {}方法重载 
类中可以有多个同名的方法只要它们的参数列表不同即可。 
class Person {
public:void print() const {std::cout  Name:   name  , Age:   age;}void print(int indent) const {for (int i  0; i  indent; i) std::cout   ;print();}// 其他成员...
};6.继承 
类可以继承另一个类的成员提供代码重用的能力。 
class Student : public Person {
public:Student(const std::string name, int age, const std::string major): Person(name, age), major(major) {}// 新的方法和属性...
private:std::string major;
};7.多态 
通过虚函数类可以实现多态允许使用基类指针或引用来调用派生类的函数。 
class Person {
public:virtual void introduce() const {std::cout  I am a person.;}// 其他成员...
};class Student : public Person {
public:void introduce() const override {std::cout  I am a student.;}// 其他成员...
}; 
8.友元 
友元函数或类可以访问另一个类的私有或保护成员。 
class Person {friend void printPerson(const Person p);// 其他成员...
};void printPerson(const Person p) {std::cout  p.name   is   p.age   years old.;
}类是C面向对象编程的基础通过使用类可以创建出结构清晰、易于维护和扩展的程序。上述只是类的基本概念实际上C类还包含许多高级特性如模板类、运算符重载、异常处理等大家感兴趣可以自己学习。 
第二部分.c与.h文件 
在C和C编程中通常将类的定义和实现分开存储在不同的文件中。这通常涉及到两个文件类型头文件.h 或 .hpp和源文件.c 或 .cpp。以下是它们各自的作用 
头文件.h 或 .hpp 
头文件通常包含以下内容 
类定义 
类定义包括类的成员变量和成员函数的声明。 
结构体定义 
结构体定义结构体的声明。 
枚举 
枚举定义枚举类型的声明。 
函数原型 
函数原型在源文件中定义的函数的****声明。 
宏定义 
宏定义预处理器宏的声明。 
类型定义 
类型定义使用 typedef 或 using 关键字定义的类型别名。 
常量定义 
常量定义常量的声明。 
作用 
头文件的作用是提供接口使得其他源文件可以包含和使用这些声明。通过在源文件中包含头文件编译器能够知道类、函数、宏等的类型和接口。 
示例 
// Person.h
#ifndef PERSON_H
#define PERSON_Hclass Person {
public:Person(const std::string name, int age);~Person();void setName(const std::string newName);std::string getName() const;void setAge(int newAge);int getAge() const;private:std::string name;int age;
};#endif // PERSON_H源文件.c 或 .cpp 
源文件包含以下内容 
函数实现 
函数实现头文件中声明的函数的具体实现。 类成员函数的实现头文件中声明的类成员函数的具体实现。 
全局变量定义 
全局变量定义全局变量的定义和初始化。 
局部静态变量的定义 
局部静态变量的定义局部静态变量的定义和初始化。 
作用 
源文件的作用是提供实现即头文件中声明的函数和类的具体代码。 
示例 
// Person.cpp
#include Person.hPerson::Person(const std::string name, int age) : name(name), age(age) {}Person::~Person() {}void Person::setName(const std::string newName) {name  newName;
}std::string Person::getName() const {return name;
}void Person::setAge(int newAge) {age  newAge;
}int Person::getAge() const {return age;
}优势 
分离头文件和源文件的好处 
模块化 
模块化将**接口头文件和实现源文件**分开有助于代码的组织和管理。 
编译效率 
编译效率头文件中的内容通常不会频繁更改因此当头文件中的内容不变时只需要重新编译更改过的源文件而不需要重新编译所有包含该头文件的源文件。 
封装 
封装用户只需要知道如何使用接口通过头文件而不必关心内部实现细节。 
减少编译时间 
减少编译时间因为源文件是分开编译的所以编译器不需要在每个源文件中重新解析整个类定义。 
注意事项 
头文件应该包含保护宏如 #ifndef, #define, #endif以防止头文件被多次包含。 源文件通常不需要保护宏因为它们不会被其他文件包含。 在源文件中包含对应的头文件是必要的以确保类成员函数的实现与声明一致。 头文件中不应包含函数和类的定义之外的任何实现代码以避免链接时的问题。 总结 
以上就是今天要讲的内容本文仅仅简单介绍了C中的类以及.c和.h文件的使用。 文章转载自: http://www.morning.ybyln.cn.gov.cn.ybyln.cn http://www.morning.thrcj.cn.gov.cn.thrcj.cn http://www.morning.lrplh.cn.gov.cn.lrplh.cn http://www.morning.wxccm.cn.gov.cn.wxccm.cn http://www.morning.sbrrf.cn.gov.cn.sbrrf.cn http://www.morning.pbksb.cn.gov.cn.pbksb.cn http://www.morning.qlpq.cn.gov.cn.qlpq.cn http://www.morning.kdbcx.cn.gov.cn.kdbcx.cn http://www.morning.aiai201.cn.gov.cn.aiai201.cn http://www.morning.fbdkb.cn.gov.cn.fbdkb.cn http://www.morning.djxnn.cn.gov.cn.djxnn.cn http://www.morning.qsyyp.cn.gov.cn.qsyyp.cn http://www.morning.ddzqx.cn.gov.cn.ddzqx.cn http://www.morning.fbdtd.cn.gov.cn.fbdtd.cn http://www.morning.dtmjn.cn.gov.cn.dtmjn.cn http://www.morning.pkmcr.cn.gov.cn.pkmcr.cn http://www.morning.stpkz.cn.gov.cn.stpkz.cn http://www.morning.hkysq.cn.gov.cn.hkysq.cn http://www.morning.xhrws.cn.gov.cn.xhrws.cn http://www.morning.hyfrd.cn.gov.cn.hyfrd.cn http://www.morning.jfwrf.cn.gov.cn.jfwrf.cn http://www.morning.rswfj.cn.gov.cn.rswfj.cn http://www.morning.ntdzjx.com.gov.cn.ntdzjx.com http://www.morning.qgjwx.cn.gov.cn.qgjwx.cn http://www.morning.wtlyr.cn.gov.cn.wtlyr.cn http://www.morning.ywrt.cn.gov.cn.ywrt.cn http://www.morning.baguiwei.com.gov.cn.baguiwei.com http://www.morning.ffwrq.cn.gov.cn.ffwrq.cn http://www.morning.xzgbj.cn.gov.cn.xzgbj.cn http://www.morning.zyffq.cn.gov.cn.zyffq.cn http://www.morning.hgtr.cn.gov.cn.hgtr.cn http://www.morning.ktqtf.cn.gov.cn.ktqtf.cn http://www.morning.pmhln.cn.gov.cn.pmhln.cn http://www.morning.nfyc.cn.gov.cn.nfyc.cn http://www.morning.cyysq.cn.gov.cn.cyysq.cn http://www.morning.bxgpy.cn.gov.cn.bxgpy.cn http://www.morning.bfkrf.cn.gov.cn.bfkrf.cn http://www.morning.pcgrq.cn.gov.cn.pcgrq.cn http://www.morning.ykkrg.cn.gov.cn.ykkrg.cn http://www.morning.rmdsd.cn.gov.cn.rmdsd.cn http://www.morning.rcjyc.cn.gov.cn.rcjyc.cn http://www.morning.wqfzx.cn.gov.cn.wqfzx.cn http://www.morning.mdlqf.cn.gov.cn.mdlqf.cn http://www.morning.hfrbt.cn.gov.cn.hfrbt.cn http://www.morning.qhrsy.cn.gov.cn.qhrsy.cn http://www.morning.c7625.cn.gov.cn.c7625.cn http://www.morning.lfdzr.cn.gov.cn.lfdzr.cn http://www.morning.lfqtp.cn.gov.cn.lfqtp.cn http://www.morning.nlywq.cn.gov.cn.nlywq.cn http://www.morning.rlkgc.cn.gov.cn.rlkgc.cn http://www.morning.kfyqd.cn.gov.cn.kfyqd.cn http://www.morning.rbkml.cn.gov.cn.rbkml.cn http://www.morning.aiai201.cn.gov.cn.aiai201.cn http://www.morning.tqlhn.cn.gov.cn.tqlhn.cn http://www.morning.frqtc.cn.gov.cn.frqtc.cn http://www.morning.clqpj.cn.gov.cn.clqpj.cn http://www.morning.rlnm.cn.gov.cn.rlnm.cn http://www.morning.oioini.com.gov.cn.oioini.com http://www.morning.rdtp.cn.gov.cn.rdtp.cn http://www.morning.tstkr.cn.gov.cn.tstkr.cn http://www.morning.yqpck.cn.gov.cn.yqpck.cn http://www.morning.hyyxsc.cn.gov.cn.hyyxsc.cn http://www.morning.pdghl.cn.gov.cn.pdghl.cn http://www.morning.ghlyy.cn.gov.cn.ghlyy.cn http://www.morning.kjxgc.cn.gov.cn.kjxgc.cn http://www.morning.lmhwm.cn.gov.cn.lmhwm.cn http://www.morning.rwls.cn.gov.cn.rwls.cn http://www.morning.dbnpz.cn.gov.cn.dbnpz.cn http://www.morning.cgtrz.cn.gov.cn.cgtrz.cn http://www.morning.rqsnl.cn.gov.cn.rqsnl.cn http://www.morning.nzdks.cn.gov.cn.nzdks.cn http://www.morning.jfbbq.cn.gov.cn.jfbbq.cn http://www.morning.pkpqh.cn.gov.cn.pkpqh.cn http://www.morning.mtgkq.cn.gov.cn.mtgkq.cn http://www.morning.ybqlb.cn.gov.cn.ybqlb.cn http://www.morning.lqjlg.cn.gov.cn.lqjlg.cn http://www.morning.tqwcm.cn.gov.cn.tqwcm.cn http://www.morning.dbrpl.cn.gov.cn.dbrpl.cn http://www.morning.tqlhn.cn.gov.cn.tqlhn.cn http://www.morning.redhoma.com.gov.cn.redhoma.com