Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >声明类成员函数

声明类成员函数
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

复制
相关文章
YbtOJ 915「欧拉函数」欧拉欧拉
规定一个正整数序列 a 是合法的,当且仅当它的长度为 k,且序列中的每一个 a_i 都小于等于 n。
yzxoi
2022/09/19
5330
算法模板——线性欧拉函数
实现功能:求出1-N的欧拉函数,然后应对若干个询问操作 其实就是个素数判定+欧拉函数性质的二合一 代码如下,我觉得应高不难懂,只要你知道欧拉函数的性质 var i,j,k,l,m,n:longint; a,b:array[0..10000005] of longint; procedure phi; var i,j:longint; begin m:=0;a[1]:=1; for i:=2 to
HansBug
2018/04/11
5610
算法模板——单个值欧拉函数
输入N,输出phi(N) 这样的单个值欧拉函数程序一般见于部分数论题,以及有时候求逆元且取模的数不是质数的情况(逆元:A/B=A*Bphi(p)-1 (mod p),一般常见题中p是质数,phi(p)-1=p-2) (Tip:我是来水经验的不解释,不过话说真的好久没写这个了TT) 1 var i:int64; 2 function Eula(x:int64):int64; 3 var res:int64;i:longint; 4 begin 5
HansBug
2018/04/10
6360
欧拉函数(欧拉筛)--模板
#include <stdio.h> #include <string.h> #include <algorithm> using namespace std; typedef long long llong; const int MAXN = 25000000 + 10; llong phi[MAXN + 200]; llong prime[MAXN + 200]; bool book[MAXN + 200]; void phi_prime (int n) { int i, j; mems
用户2965768
2018/08/30
4240
算法帝国里的牛人们:欧拉
点击标题下「大数据文摘」可快捷关注 1791年,著名奥地利作曲家约瑟夫·海顿出席了乔治·弗里德里希·亨德尔在伦敦威斯敏斯特大教堂的盛大清唱剧《弥赛亚》的演出。演出快要结束时,海顿被上千名合唱队和管弦乐
大数据文摘
2018/05/22
8480
微分方程与欧拉法
本文介绍了如何利用数值求解方法解决微分方程,包括欧拉法、龙格-库塔方法等,并给出了具体的MATLAB代码示例。
用户1147754
2018/01/03
1.1K0
微分方程与欧拉法
数论 欧拉函数_数论欧拉函数
其中p1, p2……pn为n的所有质因数,n是不为0的整数。φ(1)=1(唯一和1互质的数就是1本身)。
全栈程序员站长
2022/09/23
3510
数论 欧拉函数_数论欧拉函数
【acm】【数论】欧拉定理与欧拉函数
除此之外,还可以求有关阶,原根,指数相关的问题。有些题目也需要转化为带有欧拉函数的公式。
duadua
2022/10/31
7330
【acm】【数论】欧拉定理与欧拉函数
欧拉函数及其计算_计算n的欧拉函数
计算这个值的方法就叫做欧拉函数,用φ(n)表示。在1到8之中,与8形成互质关系的是1、3、5、7,所以 φ(n) = 4。
全栈程序员站长
2022/09/23
1.1K0
欧拉函数及其计算_计算n的欧拉函数
欧拉函数、欧拉定理学习笔记
\varphi(n) = \sum \limits _{i=1}^n \left[ i \nmid n \right]
Clouder0
2022/09/23
9600
欧拉图
1. 定义 1.1 欧拉通路 & 欧拉回路 通过图(无向图或有向图)中所有边一次且仅一次行遍所有顶点的通路称作欧拉通路。 通过图(无向图或有向图)中所有边一次且仅一次行遍所有顶点的回路称作欧拉回路。 【注】规定平凡图是欧拉图。 1.2 欧拉图 & 半欧拉图 具有欧拉回路的图称为欧拉图。 具有欧拉通路而无欧拉回路的图称作半欧拉图。 2. 性质 无向图 是欧拉图当且仅当 是连通图且没有奇度顶点。 无向图 是半欧拉图当且仅当 是连通的且恰有两个奇度顶点。 有向图 是欧拉图当且仅当
hotarugali
2022/03/01
8490
欧拉函数
通式:φ(x)=x(1-1/p1)(1-1/p2)(1-1/p3)(1-1/p4)…..(1-1/pn) 其中 p1, p2……pn 为 x 的所有质因数,x 是不为 0 的整数 φ(1)=1(唯一和 1 互质的数就是 1 本身)【注意:每种质因数只一个。比如 12=223】
Cell
2022/02/25
4670
欧拉函数
欧拉公式
欧拉公式、麦克斯韦方程组、牛顿第二定律、勾股定理、薛定谔方程、质能方程、德布罗意方程组、1+1=2、傅立叶变换、圆的周长公式。
小小杨
2021/10/13
3.4K0
欧拉函数
如果对于任意两个正整数m和n,均有f(mn)=f(m)f(n),就称为完全积性函数。
饶文津
2020/05/31
8980
欧拉回路与欧拉路径
欧拉回路与欧拉路径 如果图G中的一个路径包括每个边恰好一次,则该路径称为欧拉路径(欧拉通路)。 如果一个回路是欧拉路径,则称为欧拉回路(Euler circuit)。 说的直白点,欧拉回路就是从一个点
attack
2018/04/10
2.2K0
欧拉回路与欧拉路径
欧拉函数
欧拉函数 表示的是小于等于 且和 互质的正整数的个数。(易知 )
hotarugali
2022/03/13
1.1K0
欧拉 函数
什么是互质 如果两个正整数,除了1以外,没有其他公因子,我们就称这两个数是互质关系(coprime)。比如,15和32没有公因子,所以它们是互质关系。这说明,不是质数也可以构成互质关系。
全栈程序员站长
2022/09/23
4420
欧拉 函数
欧拉函数
问题:求[L, R]中K ( 假设φ(n)表示1..n-1中与n互质的数的个数。对于[L,R]中的任意一个除K 以外的整数y,满足φ(K)≤φ(y)且φ(K)=φ(y)时,K<y ),K是[L,R]中φ(n)最小并且值也最小的数。
全栈程序员站长
2022/09/06
4290
欧拉函数详解
欧拉函数 我们用 表示欧拉函数 定义: 表示对于整数n,小于等于n中与n互质的数的个数 性质 1. 为积性函数 证明: 此处证明需要用到下面计算方法1中的内容,建议先看后面再回过头来看这里 假设存在p,q,且 将n,p,q进行质因数分解 那么 因为 显然 这种方法也是常见的证明一个函数是积性函数的方法 2. 3.1到n中与n互质的数的和为 计算方法 计算单值欧拉函数 假设我们需要计算 分情况讨论
attack
2018/04/11
1.1K0
欧拉函数及其证明_欧拉函数证明题
计算这个值的方法就叫做欧拉函数,以φ(n)表示。在1到8之中,与8形成互质关系的是1、3、5、7,所以 φ(n) = 4。
全栈程序员站长
2022/09/23
4870
欧拉函数及其证明_欧拉函数证明题

相似问题

将显式欧拉转换为隐式欧拉(通过定点迭代)

13

带数组的欧拉隐式方法

20

ODEs积分的隐式欧拉法

13

用显式欧拉法(MATLAB)求解ODE系统

11

欧拉-拉格朗日的Sympy隐微分

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

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

洞察 腾讯核心技术

剖析业界实践案例

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