问题标签 [member-functions]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
7 回答
419 浏览

c++ - 重复调用成员函数会造成伤害吗?

我已经用 Java 和 C 编程过,现在我正试图用 C++ 来弄脏我的手。

鉴于此代码:

在 Java 中,只要我需要 的值tickets_sold,我就会反复调用 getter。

例如:

在 CI 中只会获取结构中特定变量的值:

因此,当在 C 中使用结构时,我节省了在 Java 中进行的两个调用,即两个 getter,我什至不确定这些是实际调用还是 Java 以某种方式内联这些调用。

我的观点是,如果我在 C++ 中也使用在 Java 中使用的相同技术,这两个对 getter 成员函数的调用是否会花费我,或者编译器会以某种方式知道内联代码?(从而完全减少函数调用的开销?)

或者,我最好使用:

我想编写紧凑的代码并避免不必要的函数调用,我会在 Java 中关心这一点,因为我们都知道原因。但是,我希望我的代码可读,并使用privateandpublic关键字来正确反映要做什么。

0 投票
6 回答
8507 浏览

c++ - decltype 中的成员函数调用

以下代码:

编译失败,报错:

如果我将其更改为:

我得到另一个错误:

这些有什么问题?我正在使用 gcc 4.6

0 投票
2 回答
7147 浏览

c++ - 如何在模板基类中调用模板成员函数?

在基类中调用非模板化成员函数时,可以将其名称using导入派生类,然后使用它。基类中的模板成员函数也可以这样做吗?

只是using它不起作用(使用 g++-snapshot-20110219 -std=c++0x):

我知道明确地为基类添加前缀,如

工作正常,但问题是:是否有可能没有和使用简单的 using 声明(就像它在f不是模板函数的情况下一样)?

如果这是不可能的,有人知道为什么吗?

0 投票
4 回答
244 浏览

c++ - C++ 对象如何保存有关其成员函数的信息

C++ 对象如何保存有关其成员函数的信息。让我们考虑上面的代码。当我在对象“a”上调用 printSometext 时,它如何知道要调用什么函数以及如何找到正确的方法。在打印对象的大小时,它会打印其成员变量(+对齐)的总和大小。所以请提供一些内部信息如何调用成员函数。

谢谢,德穆斯

0 投票
4 回答
1674 浏览

c++ - C++虚函数除了vtable怎么实现?

可能重复:
关于 C++ 中虚拟机制的问题

使用 vtable 是在 C++ 中实现虚拟成员函数机制的唯一方法吗?还有哪些其他方式?

0 投票
6 回答
1480 浏览

c++ - 为什么我通过C++中的空指针调用成员函数时程序不会崩溃?

我的输出为“TESTING NULL POINTER”。谁能解释为什么这个程序正在打印输出而不是崩溃。我在 Dev C++ 和 aCC 编译器上检查它都给出了相同的结果。

0 投票
3 回答
1797 浏览

c++ - C++ 类 - 如何从另一个成员函数引用成员函数

我对 c++ 类很陌生,所以这可能是一个非常明显的问题,但是因为我不熟悉术语,但我似乎无法获得正确的搜索词。

无论如何,我想要做的是让一个类中的公共函数访问同一个类中的一个私有函数。

例如

0 投票
4 回答
136 浏览

c++ - 需要说明 const 成员函数

我对为什么这段代码编译和运行有点困惑:

运行此代码的输出FFFFFFFF也是......出乎我的意料。不应该this->b返回const int*,因为它在 const 成员函数中?因此该return行应该生成编译器转换错误以尝试转换const int*int*

显然,我对 const 成员函数的含义的了解存在差距。如果有人可以帮助我弥合这一差距,我将不胜感激。

0 投票
7 回答
15735 浏览

c++ - Effective C++ Item 23 Prefer non-member non-friend functions to member functions

在对类设计的一些事实感到困惑时,特别是函数是否应该是成员,我查看了 Effective c++ 并找到了第 23 条,即 Prefer non-member non-friend functions to member functions。使用 Web 浏览器示例第一手阅读该内容是有一定道理的,但是该示例中的便利函数(在书中像这样命名非成员函数)会改变类的状态,不是吗?

  • 那么,第一个问题,他们不应该成为会员吗?

  • 进一步阅读,他考虑了 STL 函数,实际上某些类未实现的一些函数是在 stl 中实现的。按照本书的想法,它们演变成一些方便的函数,这些函数被打包到一些合理的命名空间中std::sort,例如std::copyfrom algorithm。例如vector,类没有sort函数,并且使用 stlsort函数,因此它不是向量类的成员。但是也可以将相同的推理扩展到向量类中的其他一些函数,例如,assign它也不能作为成员实现,而是作为便利函数实现。然而,这也会改变对象的内部状态,比如它所操作的排序。那么这个微妙但重要(我猜)的问题背后的基本原理是什么。

如果您可以访问这本书,您能否为我进一步澄清这些观点?

0 投票
2 回答
331 浏览

c++ - 成员函数的相互返回类型 (C++)

在 C++ 中是否可以有两个类,我们称它们为Aand B,这样A有一个f返回 class 对象的成员函数B,并且B有一个g返回 class 对象的成员函数A

(下面的文字只是为了表明我已经“完成了我的作业”。)

问题只是如何编写这些函数的签名,当第一个定义的类中的函数将具有不完整的返回类型时。前向声明在这里没有帮助,因为对象是按值返回的。

是的,我知道所有的解决方法(朋友全局函数,通过指针返回,...),但我只想知道上面的接口是否可以在 C++ 中实现。举个例子,假设我试图在 class 上重载 operator()A以 return B,并在 class上重载Breturn A。由于我是重载运算符,所以我必须按值返回(好吧,除非我想要一个动态分配地狱:),并且 () 必须作为成员函数重载,所以我不能使用全局朋友。