function相关内容
我想知道你的代码中有没有使用的函数的开销。 例如,你有一些调试日志,然后给你的大多数对象在调试日志中使用的ToString()函数。 在未使用调试日志记录的版本构建中。那么它是否值得删除那些ToString()函数的源代码? (例如通过宏?) 或者,它们只是使可执行文件稍大一点,否则不会影响性能?例如没有速度影响?或者编译器或链接器可能甚至删除函数,如果他们不使用?如果编译器或链
..
我想要一个不是类的成员并且可以从任何类访问的函数。 我假设我需要 #include 声明函数的头文件,但我不知道在哪里定义这样的全局函数。 解决方案 你需要一个正文(在 cpp 文件): int foo() { return 1; } 和头文件中的定义/原型,使用函数: #ifndef MY_FOO_HEADER_ #define MY_
..
我目前正在研究如何编写高效的C ++代码,并且在函数调用的问题上,一个问题出现了。比较此伪码函数: not-void function-name(){ do-something return值; } int main(){ ... arg = function-name(); ... } / p> void function-name(
..
我在计算Fibonacci序列,偶然发现这个代码,我看到了很多: int Fibonacci x) { if(x return 1; } return Fibonacci(x-1)+ Fibonacci(x-2); } 我不明白是如何工作的,结束:它是否再次调用Fibonacci函数? 解决方案 是的,函数调用自身。例如, 斐波纳契(4)
..
我是阅读链接的问题,让我提出这个问题。 请考虑下列代码 int main() { string SomeString(); } 所有说,编译器将此作为函数原型,而不是 string 对象。现在考虑下面的代码。 int main() { string Some() { return“”; } } 编译器说这是无效的,因为我猜嵌
..
我想我之前已经问过我的问题,我已经阅读过,但仍然很困惑,因此要求澄清。 C ++标准说,类定义中定义的所有成员函数都是内联的 我也听说编译器可以忽略函数的内联。在上面的情况下是真的,如果在类定义的内部定义,它将总是内联的? 此外,这个设计背后的原因是什么,使所有的函数定义在类定义内部?内联与源文件和头文件有什么关系? 更新:因此,如果不内联,应该总是在类外定义他们的函数,对
..
可能的重复项: C ++:静态成员函数 什么时候在C ++中使用静态成员函数? 解决方案 静态成员函数的良好用途: 元编程。现实世界的例子是模板std :: char_traits。所有成员函数都是静态的 使它成为一个静态成员函数,它可以访问类的私有成员,虽然这里的朋友也可以。 因此,受保护的静态成员函数只能由其派生的类和类访问。 请注意,最后一种情况适用于受保
..
每个包含一个或多个虚函数的类都有一个与它相关的V表。一个名为vptr的void指针指向该vtable。该类的每个对象都包含指向同一个Vtable的vptr。那么为什么vptr不是静态的呢?而不是将vptr与对象关联,为什么不将它与类关联? 解决方案 对象的运行时类是对象本身的属性。实际上, vptr 表示运行时类,因此不能是 static 。但是,它指向的是同一个运行时类的所有实例可以共享
..
我可能完全错了,但是我明白,C ++并没有一个本地的“指针成员函数”类型。我知道你可以使用Boost和mem_fun等等。但是为什么C ++的设计者决定不要有一个包含指向函数的指针和指向对象的指针的64位指针,例如? 我的意思是指向未知类型的特定对象的成员函数的指针。 I.E.您可以用于回电的内容。这是一个包含两个值的类型。第一个值是指向函数的指针,第二个值是指向对象的特定实例的指针。
..
我有三个不同的基类: class BaseA { public: virtual int foo()= 0; }; class BaseB { public: virtual int foo(){return 42; } }; class BaseC { public: int foo(){return 42; } }; 然后,
..
如果没有函数重载,函数名称将作为函数代码的地址,当函数被调用时,其地址很容易使用其名称查找。但是对于函数重载,程序如何才能找到正确的函数地址呢?是否有一个类似于虚拟表的隐藏表,存储重载的函数及其地址?非常感谢! 解决方案 编译器可以查看调用,并将其与已知的重载实现匹配,正确对象,真爱。 更新:删除了我在尝试通过展示来展示概念时所做的尝试。编译器可以选择不同命名的函数。
..
当我尝试建立以下开关时,我得到一个“控制权转移绕过初始化:”错误: switch (retrycancel) { case 4://用户按RETRY //枚举所有可见窗口,并在“windows”中存储句柄和标题 std :: vector windows = MainHandles()。enum_windows()。get
..
我有一个类似这样的函数: bool generate_script(bool net,bool tv,bool phone, std :: string clientsID, std :: string password, int index,std :: string number, std :: string Iport,std :: string sernoID, std
..
#include int main(){ auto lambda = [] { return 7; }; std :: cout
..
我试图发送一个向量作为参数到一个函数,我不知道如何使它的工作。尝试了一堆不同的方式,但他们都给出不同的错误消息。 我只包括部分代码,因为它只有这一部分不工作。 (向量“random”随机填充,但排序,值介于0和200之间) 更新代码: #include #include #include #include
..
在C ++中,函数的签名部分取决于它是否为const。这意味着一个类可以有两个成员函数具有相同的签名,除了一个是const和另一个不是。如果你有一个这样的类,编译器将决定哪个函数调用基于对象你调用它:如果它是类的const实例,函数的const版本将被调用;如果对象不是const,将调用其他版本。 在什么情况下您可能想利用此功能? 解决方案 这真的只有当成员函数返回一个指针或引用你的
..
我想获得一个成员函数的地址,但我不知道如何。我会感激,如果有人可以告诉我我做错了什么。正如你在下面的例子中可以看到的,既没有(长)& g也没有(长)& this-> g工作,我无法弄清楚正确的语法: / *创建一个类(冗余地)执行数据成员选择 和使用this关键字的成员函数调用(指的是 地址当前对象)。 * / #include using namespac
..
我需要检查一个变量是否是一个整数,比如我有代码: double foobar = 3; //伪代码 if(foobar == whole) cout
..
我在 cppreference 上看到 std :: function :: argument_type 在C ++ 17中已被弃用。其背后的原因是什么? 解决方案 相关论文
..
假设我们有一个类 class A { int x; public: void sayHi() { cout sayHi(); } 上述代码将在 Turbo C (其中我测试)并打印 Hi 作为输出。 code> a 是 NULL 。更多的
..