Questions tagged «c++»

C ++是一种通用编程语言。它最初被设计为C的扩展,并且具有类似的语法,但是现在它是一种完全不同的语言。使用此标记可解决有关将要使用C ++编译器编译的代码的问题。对于与特定标准修订版[C ++ 11],[C ++ 14],[C ++ 17]或[C ++ 20]等相关的问题,请使用特定于版本的标记。

11
LRU缓存设计
最近最少使用(LRU)高速缓存将首先丢弃最近最少使用的项目。如何设计和实现这种高速缓存类?设计要求如下: 1)尽快找到商品 2)一旦缓存未命中并且缓存已满,我们需要尽快替换最近最少使用的项目。 如何从设计模式和算法设计上分析和实现这个问题?

5
如何确定对新的C ++项目使用ATL,MFC,Win32还是CLR?
我刚刚开始我的第一个C ++项目。我正在使用Visual Studio 2008。这是一个单格式的Windows应用程序,它访问几个数据库并启动WebSphere MQ事务。我基本上了解ATL,MFC,Win32(实际上我对此不太了解)和CLR之间的区别,但是我对应该如何选择感到困惑。 是否有其中一个或多个用于向后兼容? CLR是个坏主意吗? 任何建议表示赞赏。 编辑: 出于这个原因,我选择了C ++是出于我没有在帖子中讨论的原因,而这并不是完全技术性的。因此,假设C ++是唯一/最佳选择,那我应该选择哪个呢?
73 c++  winapi  mfc  clr  atl 

5
函数指针的解除引用如何发生?
为什么以及如何取消引用函数指针只是“什么都不做”? 这就是我在说的: #include<stdio.h> void hello() { printf("hello"); } int main(void) { (*****hello)(); } 从这里的评论: 函数指针取消引用就可以了,但是生成的函数指示符将立即转换回函数指针 从这里的答案: 取消引用(按照您的想法)函数的指针意味着:访问CODE内存,因为它就像是DATA内存。 不能以这种方式取消对函数指针的引用。相反,它被称为。 我将使用“取消引用”和“调用”的名称。没关系。 无论如何:C的设计方式使得函数名称标识符以及变量保存函数的指针都具有相同的指向CODE存储器的地址。并且它允许通过在标识符或变量上使用call()语法跳转到该内存。 函数指针的取消引用到底如何工作?

8
在C ++中使用std :: allocator而不是new有什么优势?
我刚刚读过有关std::allocator。我认为,使用它而不是使用newand更复杂delete。 随着allocator我们必须明确分配堆内存,构建它,消灭它,然后终于解除分配内存。那么为什么创建它呢? 在什么情况下可以使用它,何时应使用它代替new和delete?
73 c++  heap  alloc 

4
C ++-包括unistd.h:为什么不好奇?
据说在C ++中包含C头文件时,应删除“ .h”后缀,然后在开头添加“ c”。例如,#include <cstdio> 代替#include <stdio.h>。但是当我sleep()在我的代码中使用时,#include <cunistd>不起作用,但是#include <unistd.h>起作用。为什么不<cunistd>呢?
73 c++  c 

3
将派生类的unique_ptr用作将unique_ptr用作基类的函数的参数
我正在尝试unique_ptr在将aunique_ptr用作基类的函数中使用to派生类。就像是: class Base {}; class Derived : public Base {}; void f(unique_ptr<Base> const &base) {} … unique_ptr<Derived> derived = unique_ptr<Derived>(new Derived); f(derived); 如果我正确理解此答案,则此代码应该可以工作,但是会导致以下编译错误: 错误C2664:'f':无法将参数1从'std :: unique_ptr <_Ty>'转换为'const std :: unique_ptr <_Ty>&' IntelliSense:不存在从“ std :: unique_ptr <派生,std :: default_delete <派生>>”到“ const std :: unique_ptr <基本,std :: default_delete <基本>>”的合适的用户定义转换 如果我更改f为take unique_ptr<Derived> const …

3
如何调用在另一个文件上找到的函数?
我最近开始使用C ++和SFML库,我想知道我是否在适当地称为“ player.cpp”的文件上定义了Sprite,如何在位于“ main.cpp”的主循环中调用它? 这是我的代码(请注意,这是SFML 2.0,而不是1.6!)。 main.cpp #include "stdafx.h" #include <SFML/Graphics.hpp> #include "player.cpp" int main() { sf::RenderWindow window(sf::VideoMode(800, 600), "Skylords - Alpha v1"); while (window.isOpen()) { sf::Event event; while (window.pollEvent(event)) { if (event.type == sf::Event::Closed) window.close(); } window.clear(); window.draw(); window.display(); } return 0; } 播放器 #include "stdafx.h" #include <SFML/Graphics.hpp> int …
73 c++  sfml  identifier 

9
查找包含未使用的标头的工具?[关闭]
关闭。此问题不符合堆栈溢出准则。它当前不接受答案。 想改善这个问题吗?更新问题,使其成为Stack Overflow的主题。 7年前关闭。 改善这个问题 我知道PC-Lint可以告诉您有关包含但不使用的标头的信息。还有其他工具可以做到这一点,最好是在Linux上吗? 我们有一个庞大的代码库,在过去的15年中,已经看到了很多功能在移动,但是当功能从一个实现文件转移到另一个实现文件时,剩下的#include指令很少被删除,到这一点为止,我们仍然一团糟。显然,我可以做些艰苦的工作,删除所有的#include指令,让编译器告诉我要重新包含的那些指令,但我宁愿反向解决问题-查找未使用的指令-而不是重建已使用的指令列表。

5
在C ++中,是否可以将一个类声明为继承自另一个类?
我知道我可以做到: class Foo; 但是我可以将一个类声明为继承自另一个类吗,例如: class Bar {}; class Foo: public Bar; 用例示例是协变引用返回类型。 // somewhere.h class RA {} class RB : public RA {} ...然后在另一个不包含某处的标头中 // other.h class RA; class A { public: virtual RA* Foo(); // this only needs the forward deceleration } class RB : public RA; // invalid …


7
如何将wchar_t值打印到控制台?
例: #include <iostream> using namespace std; int main() { wchar_t en[] = L"Hello"; wchar_t ru[] = L"Привет"; //Russian language cout << ru << endl << en; return 0; } 此代码仅打印地址的十六进制值。如何打印wchar_t字符串?

21
如何在二进制代码中隐藏字符串?
有时,从二进制(可执行)文件中隐藏字符串很有用。例如,从二进制文件隐藏加密密钥很有意义。 当我说“隐藏”时,我的意思是使字符串很难在已编译的二进制文件中找到。 例如,此代码: const char* encryptionKey = "My strong encryption key"; // Using the key 编译后生成可执行文件,其数据部分包含以下内容: 4D 79 20 73 74 72 6F 6E-67 20 65 6E 63 72 79 70 |My strong encryp| 74 69 6F 6E 20 6B 65 79 |tion key | 您可以看到我们的秘密字符串可以轻松找到和/或修改。 我可以隐藏线... char encryptionKey[30]; int …
73 c++  obfuscation 

6
使用C#代码中的C ++ dll中定义的类
我有一个用C ++编写的dll,我需要在我的C#代码中使用此dll。搜索之后,我发现使用P / Invoke可以访问所需的函数,但是这些函数是在类中定义的,并且使用非静态私有成员变量。因此,我需要能够创建此类的实例以正确使用这些功能。如何获得对此类的访问权限,以便可以创建实例?我一直无法找到一种方法来做到这一点。 我想我应该注意,C ++ dll不是我的代码。
73 c#  c++  dll  pinvoke 

6
为什么在编译时不能解决运行时多态性?
考虑: #include<iostream> using namespace std; class Base { public: virtual void show() { cout<<" In Base \n"; } }; class Derived: public Base { public: void show() { cout<<"In Derived \n"; } }; int main(void) { Base *bp = new Derived; bp->show(); // RUN-TIME POLYMORPHISM return 0; } 为什么此代码会导致运行时多态,为什么在编译时无法解决?
73 c++  polymorphism 

5
const参考参数
以下声明之间有区别吗? void somefunc(const Person &p); void somefunc(Person const &p);
73 c++ 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.