网站首页 > 博客文章 正文
inline类型的成员函数
类的成员函数也可以定义为内联(inline)函数。C++要求对一般的内联函数要用关键字inline声明,但对类内定义的成员函数,可以省略inline,因为这些成员函数已被隐含地指定为内联函数,如:
class student //以class开头
{
private: //以下的部分是私有部分
char name[32];
char addr[32];
long long number;//以上3 行是成员变量
public: //以下部分是公有部分
student(char* pn, char* pa, long long n)
{
strcpy(name, pn);
strcpy(addr, pa);
number = n;
}
void print()
{
cout << "name = " << name << endl;
cout << "addr = " << addr << endl;
cout << "number = " << number << endl;
}
};
其中第print()函数的定义如下:
void print()
也可以写成:
inline void print()
将print() 函数显式地声明为内联函数。以上两种写法是等效的。对在类体内定义的函数,一般都省略写inline关键字,默认是inline函数。
应该注意的是:如果成员函数不在类体内定义,而在类体外定义,系统并不把它默认为内联(inline)函数,调用这些成员函数的过程和调用一般函数的过程是相同的,如果想将这些成员函数指定为内联函数,应当用inline作显式声明,如:
class student //以class开头
{
private: //以下的部分是私有部分
char name[32];
char addr[32];
long long number;//以上3 行是成员变量
public: //以下部分是公有部分
student(char* pn, char* pa, long long n)
{
strcpy(name, pn);
strcpy(addr, pa);
number = n;
}
inline void print(); //声明为内联函数
};
inline void student::print() //在类外定义内联函数
{
cout << "name = " << name << endl;
cout << "addr = " << addr << endl;
cout << "number = " << number << endl;
}
将一般函数指定为内联函数的时候,只要在函数的声明或函数的定义时,对两者之一作 inline 声明即可。
注意,这样做,不利于类的接口与类的实现分离,不利于信息隐藏。虽然程序的执行效率提高了,但从软件工程质量的角度来看,这样做并不是好的办法。
所以,我们不建议直接在类内定义函数,在类内定义一个内联函数。
可以在类内声明为inline类型,然后,在类外定义。
那么,我们就可以把类的声明和类的函数定义分开,编译代码的管理!不要在一个类中,编写大量的代码,应该把类的声明和类的定义分开。
只有成员函数规模很小,而调用频率较高时,才将此成员函数指定为内联函数。
猜你喜欢
- 2025-08-03 C++语法进阶-字符:字符变量(char)
- 2025-08-03 c++26新功能—Read-Copy-Update
- 2025-08-03 为什么Linux之父那么讨厌C++ 他骂的这几点。句句扎心
- 2025-08-03 为什么Linux之父那么讨厌C++ 他骂的这几点!句句扎心
- 2025-08-03 20道qiao牛逼的c++/c面试题
- 2025-08-03 C++学习教程_C++语言随到随学_不耽误上班_0基础
- 2025-08-03 20天轻松入门《C++第四章——函数》——4经坛教育
- 2025-08-03 看完侯捷老师所有C++视频之后的总结
- 2025-08-03 C++11+ 泛型编程(模板)
- 2025-08-03 C++20并发库新成员jthread(续)
你 发表评论:
欢迎- 08-03 Docker 命令入门实战:搞懂这些才算真正入门!
- 08-03Docker 常用命令分类汇总
- 08-03docker常用命令大全,看这一篇就够了
- 08-03Docker命令大全详解(39个常用命令)
- 08-03Docker 常用命令手册
- 08-03Docker命令最全详解(39个最常用命令)
- 08-03Docker命令最全详解(29个最常用命令)
- 08-03C++语法进阶-字符:字符变量(char)
- 最近发表
- 标签列表
-
- ifneq (61)
- 字符串长度在线 (61)
- googlecloud (64)
- flutterrun (59)
- powershellfor (73)
- messagesource (71)
- plsql64位 (73)
- vueproxytable (64)
- npminstallsave (63)
- promise.race (63)
- 2019cad序列号和密钥激活码 (62)
- window.performance (66)
- qt删除文件夹 (72)
- mysqlcaching_sha2_password (64)
- nacos启动失败 (64)
- ssh-add (70)
- yarnnode (62)
- abstractqueuedsynchronizer (64)
- source~/.bashrc没有那个文件或目录 (65)
- springboot整合activiti工作流 (70)
- jmeter插件下载 (61)
- 抓包分析 (60)
- idea创建mavenweb项目 (65)
- qcombobox样式表 (68)
- pastemac (61)
本文暂时没有评论,来添加一个吧(●'◡'●)