首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >声明类成员函数

声明类成员函数
EN

Stack Overflow用户
提问于 2015-06-26 20:33:15
回答 8查看 261关注 0票数 1

我有一点C++的背景,但我只是刚刚开始接触这种语言的面向对象编程方面。我正在阅读有关类格式的C++教程网站。我读到可以在类内声明一个函数,然后使用作用域操作符::在类外定义它。考虑到我的一点经验,我想知道是否普遍倾向于在类内定义函数,或者如果它在类外定义,或者如果它真的无关紧要。

来自C++教程网站

代码语言:javascript
运行
AI代码解释
复制
// classes example
#include <iostream>
using namespace std;

class Rectangle {
    int width, height;
  public:
    void set_values (int,int);
    int area() {return width*height;}
};

void Rectangle::set_values (int x, int y) {
  width = x;
  height = y;
}

这意味着,在类中只包含set_values定义不是更紧凑、更高效吗?

一如既往的,谢谢。

EN

回答 8

Stack Overflow用户

发布于 2015-06-26 20:44:41

通常,声明位于.h文件中,而定义位于同名的.cpp文件中。

示例:

矩形.h:

代码语言:javascript
运行
AI代码解释
复制
class Rectangle {
    int width, height;
  public:
    void set_values (int,int);
    int area() {return width*height;}
};

rectangle.cpp:

代码语言:javascript
运行
AI代码解释
复制
#include <rectangle.h>

void Rectangle::set_values (int x, int y) {
  width = x;
  height = y;
}

这在将你的代码分发给其他人的时候很有帮助。您可以只分发一个.dll和一个.h供其他人使用,并将实际代码保存在.cpp文件中。

.h文件开始增长时,它也很有用。看到上千行的.cpp文件并不少见。仅仅是为了找到该类的公共接口,就需要花费大量的精力。

注意:.h.cpp只是约定。您可能会发现其他函数,如.cxx.inl (用于内联函数)。

票数 1
EN

Stack Overflow用户

发布于 2015-06-26 20:42:59

短方法在声明中很好用。较长的方法通常更适合与cpp文件中的其他方法一起保存。Getter和setter通常很短,所以在学习或调试其他更重要的方法时,某些人(不是原始作者)不需要太关心它们。

票数 0
EN

Stack Overflow用户

发布于 2015-06-26 20:45:17

这取决于您遵循的约定。

常见的约定是将getter和setter放在头文件中,因为这些函数可能经常被调用,因此应该由编译器内联。将函数放在头文件中鼓励(但不保证)编译器执行此操作。

接下来,出于各种原因,更长的声明应该保留在.cpp中。首先也是最重要的,如果您在.h中做了任何更改,它必须重新编译任何文件,包括头文件。这可能会显著增加时间,具体取决于您的项目。其次,这提供了一种方法来“隐藏”您想要构建到库中的专有代码。在这种情况下,以及在最常见的良好编程实践中,您希望头文件成为程序员的指南,程序员可以在这里快速了解类的功能,并根据注释来决定如何使用类提供的功能。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31081698

复制
相关文章
如何在Python中将字典键作为列表返回?
参考链接: Python字典keys() 本文翻译自:How to return dictionary keys as a list in Python?  In Python 2.7 , I cou
用户7886150
2021/01/25
2.2K0
如何在Python中将列表转换为字符串?
Python provides different variable type for programmers usage. We can use int, float, string, list, set … data types in our applications. While using different type of variables we may need to convert then to different types. In this tutorial we will different type of conversion from list to string in Python.
全栈程序员站长
2022/08/12
4.7K0
Python将一个数逆序列放入列表中
小小科
2020/06/15
1.2K0
【说站】Python如何在列表中添加新值
1、append()将元素添加到集合,insert()将元素插入指定的下标应用程序,返回值为None。
很酷的站长
2022/11/24
4.3K0
【说站】Python如何在列表中添加新值
如何在 Python 中计算列表中的唯一值?
Python 提供了各种方法来操作列表,这是最常用的数据结构之一。使用列表时的一项常见任务是计算其中唯一值的出现次数,这在数据分析、处理和筛选任务中通常是必需的。在本文中,我们将探讨四种不同的方法来计算 Python 列表中的唯一值。
很酷的站长
2023/08/11
7230
如何在 Python 中计算列表中的唯一值?
访问列表中的值
#!/usr/bin/python list1 = ['physics', 'chemistry', 1997, 2000] list2 = [1, 2, 3, 4, 5, 6, 7 ] print "list1[0]: ", list1[0] print "list2[1:5]: ", list2[1:5]
用户8442333
2021/05/27
5.8K0
如何在Dart中合并列表
在 Dart 编程中,List 数据类型类似于其他编程语言中的数组。列表用于表示对象的集合。它是一组有序的对象。Dart 中的核心库负责 List 类的存在、创建和操作。有 5 种方法可以组合两个或多个列表:
徐建国
2021/12/01
2.2K0
flutter - 如何在Dart/Flutter中将某些元素从一个Map复制到新Map中?
由于keys返回 map 键的Iterable<String>,因此您可以使用where方法检查所需的键,然后可以基于旧 map 值填充值。
徐建国
2021/08/30
1.4K0
Golang 中函数作为值与类型
在 Go 语言中,我们可以把函数作为一种变量,用 type 去定义它,那么这个函数类型就可以作为值传递,甚至可以实现方法,这一特性是在太灵活了,有时候我们甚至可以利用这一特性进行类型转换。作为值传递的条件是类型具有相同的参数以及相同的返回值。
张乘辉
2019/06/14
1.7K0
[Go] golang中接口值(interface)的比较
当写项目的过程中 , 有时候进行逻辑判断 , 如果没注意对两个interface类型的变量进行比较 , 会造成混乱问题
唯一Chat
2021/01/21
3.8K0
如何在终端和 PowerShell 中将一个命令自动重复执行多次
你可能有很多原因要将一个命令重复执行多次,本文介绍在多个平台下如何多次重复执行命令。
walterlv
2020/03/12
4K0
如何在 Python 中将数字转换为字母?
在编程中,有时我们需要将数字转换为字母,例如将数字表示的年份转换为对应的字母表示,或者将数字编码转换为字母字符。Python 提供了多种方法来实现这种转换。本文将详细介绍在 Python 中将数字转换为字母的几种常用方法,并提供示例代码帮助你理解和应用这些方法。
网络技术联盟站
2023/06/01
2K0
python中将dict存入list中,list值仍然随着dict变化【Flask】
在一次将数据库查询结果手动转化为json数据(obj转json)的过程中,发现前端得到的每条数据都是一样的,,,,简述为,列表存入字典值后值会变化,代码如下:
来杯Sherry
2023/05/25
3690
如何在js中将统计代码图标隐藏
  建站时我们都会加一下网站统计,方便把控内容的内容的运营。大部分站长安装的站点统计是第三方统计代码,js形式的,很少用以服务器日志为基础分析的统计。(当然能通过网站日志来分析网站的运营者比一般的站长水平相对要高一些,也更会折腾。因为很多统计都没记录蜘蛛的轨迹)普通的js统计代码就能满足大多数的需求。安装统计代码想必大家闭着眼睛都会,但如果网站是静态页面的话,那每个页面都要添加到,即使安装在统一调用的页脚,那生成页面也需要一定的时间。有没更便捷的办法呢?将统计代码写进常用的js文件中。   将统计代码写进j
ytkah
2018/03/05
13.5K0
如何在js中将统计代码图标隐藏
Python中将字典转换为有序列表、无序列表的方法
说明:列表不可以转换为字典 1.转换后的列表为无序列表 a = {'a' : 1, 'b': 2, 'c' : 3} #字典中的key转换为列表 key_value = list(a.keys()
用户1214487
2018/04/13
3.6K0
Python中将字典转换为有序列表、无序列表的方法
如何在小程序里面放入企业官网注意:
小程序解析html网页标签,有3种方法: 1:使用 wxParse 解析html 2:单独解析 html标签 3:使用最新的小程序组件 web-view 前段时间,微信正式宣布为方便开发者灵活配置小程序,小程序现开放内嵌 Web 页面能力,但这个开放的能力也具有一定的局限性,小程序如果想要内嵌网页,那域名只能是自己公司的,对这个网站拥有控制权才可以。 参考文档:https://mp.weixin.qq.com/debug/wxadoc/dev/component/web-view.html 在小程序里
王小婷
2018/06/01
1.2K0
如何在 .Net 7 中将 Query 绑定到数组
在 .Net 7 中,我们可以通过绑定数组的方式来接收来自查询字符串的参数。这样就不需要再使用逗号分隔的字符串来获取参数了。
newbe36524
2023/08/23
1490
flutter - 如何在 dart/flutter 中收听流值
如果流不是广播流,则您只能收听一次。 请参阅此 Medium post 以了解有关 Streams 的更多信息。 收听 stream 时,您需要在 _assetsAudioPlayer.currentPosition 函数中添加您的代码。
徐建国
2021/08/30
1.1K0
idea将多个项目放入一个模块中如何各自运行
导入完成后,出现新项目目录,在目录下找到红色报错的目录删除掉,导入自己的,下面是我删除、导入后的样子、
2020/10/23
2.8K0
idea将多个项目放入一个模块中如何各自运行
点击加载更多

相似问题

如何在golang中将regexp放入proto struct中?

228

如何在golang中将值放入可选字符串参数中?

119

如何在golang urfave cli中将标志值传递给子命令

10

如何在golang中将tar文件放入tar文件中?

21

如何在XPages中将数字列表放入组合框值列表

11
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档