小编Rus*_*sel的帖子

什么时候有人会使用工会?它是仅限C天的残余吗?

我已经学会了但并没有真正得到工会.我经历的每一个C或C++文本都会介绍它们(有时会传递),但是它们往往只提供很少的实际例子来说明为什么或在哪里使用它们.工会什么时候可以用于现代(甚至遗留)案件?我只有两个猜测是编程微处理器,当你的空间非常有限,或者你正在开发一个API(或类似的东西),并且你想迫使最终用户只有一个对象/类型的实例一度.这两个猜测是否接近正确?

c c++ unions

126
推荐指数
11
解决办法
7万
查看次数

C++标准库 - 何时应该使用它,何时不应该使用它?

我想知道人们实际使用大部分标准c ++库的频率,特别是<algorithm><numeric>标题中的东西.教科书似乎推荐它们,但是我没有看到它们在我筛选过的各种项目中都使用过(巧合?)而且个人似乎每次都自己编写适当的简单算法而不是记忆或者更容易每次都参考这些标题的参考.我只是懒惰或顽固?使用这些库时,实际上是否有性能提升等?

谢谢,

[R

c++ algorithm header

36
推荐指数
3
解决办法
4274
查看次数

C++多态/继承问题:基本函数与虚函数的重新定义

我知道派生类可以简单地"重新定义"基类成员函数,并且当调用派生类对象的函数时,使用派生类中定义的函数,但是...这不会呈现"虚拟" "关键字冗余?我已经读过这两种情况之间的一些明显的显着差异(即:如果你有一个指向派生类的基类指针而你调用一个函数,如果它是虚拟的,那么将调用派生类函数,但如果没有,则将调用基类函数).

换句话说,能够将成员函数重新定义为非虚函数的目的是什么,这是一种常用的做法吗?

就个人而言,在我看来它会变得非常混乱.

谢谢!

c++ inheritance virtual-functions

10
推荐指数
2
解决办法
1万
查看次数

MS Visual C++:您何时应该关注使用调用约定?

在C/C++中(具体来说,我使用的是MSVS),在什么情况下需要担心为函数定义指定调用约定?它们是否重要?是否有能力在必要时选择最佳约定(即fastcall等).

也许我的理解是缺乏的,但我只是不知道他们的情况何时会成为程序员需要关心的事情,比如参数放在堆栈上的顺序等等.我也不明白为什么编译器的优化不能选择任何最适合该特定函数的方案.任何人都可以提供给我的任何知识都会很棒.谢谢!

c c++ calling-convention

8
推荐指数
2
解决办法
271
查看次数

C++内存管理的引用类型

我仍然是一个相当新手的程序员,我对使用refence类型的c ++内存管理有疑问.

首先,我对参考类型的理解:

指针放在堆栈上,指针指向的实际数据被创建并放在堆上.标准数组和用户定义的类是refence类型.它是否正确?其次,我的主要问题是做c和c ++的内存管理机制(malloc,free和new,delete)总能正确处理这个并释放类或数组所指向的内存吗?如果这些指针以某种方式重新分配给堆上相同大小/类型的其他对象,那么一切仍然有效吗?如果一个类有一个指向另一个对象的指针成员怎么办?我假设删除/释放类对象不释放它的成员指针所指向的,这是正确的吗?

谢谢大家!

-R

c c++ heap stack memory-management

7
推荐指数
1
解决办法
4392
查看次数

Visual Studio C++:我什么时候应该使用__declspec(dllimport)?

我在Visual Studio 2005及更高版本中有关于DLL构建/链接的问题.基本上我的理解和经验是这样的:

要构建DLL,我指定项目属性来构建DLL,然后我在__declspec(dllexport)前面的任何我想从DLL公开暴露的函数或成员.构建项目将生成DLL,Lib和头文件,可以像API或其他东西一样进行部署.

另一方面,要让您的其他已编译的可执行应用程序动态链接到DLL并使用其功能,您只需要让您的可执行项目包含头文件并链接到构建DLL时创建的小型lib文件.只要编译的应用程序可以找到DLL,一切都会工作.

这是我的经验,也是Microsoft DLL构建教程如何描述MSDN上的所有内容.我想知道:这是标准做法吗?你什么时候需要在任何地方使用__declspec(dllimport)?我错过了什么吗?

谢谢!

c++ import dll export visual-studio

7
推荐指数
1
解决办法
5209
查看次数

C++ - 关于包含"类型"成员的联合的问题

关于工会我还有一些不明白的问题.我已经阅读了很多他们的用途,并且在大多数情况下可以看到它们如何有用并理解它们.我已经看到他们可以提供原始的"C风格"多态性.我在几个网站上看到的这个例子是SDL的事件联盟:

typedef union {
 Uint8 type;
 SDL_ActiveEvent active;
 SDL_KeyboardEvent key;
 SDL_MouseMotionEvent motion;
 SDL_MouseButtonEvent button;
 SDL_JoyAxisEvent jaxis;
 SDL_JoyBallEvent jball;
 SDL_JoyHatEvent jhat;
 SDL_JoyButtonEvent jbutton;
     SDL_ResizeEvent resize;
 SDL_ExposeEvent expose;
 SDL_QuitEvent quit;
 SDL_UserEvent user;
     SDL_SysWMEvent syswm;
} SDL_Event;
Run Code Online (Sandbox Code Playgroud)

我无法理解的是,如何在那里与活动类型共存的"类型"成员?这些是不是每个只允许一次存在一个,因为它们占据相同的记忆区域?工会不会随时存在,不论是一种类型还是其中一种事件?

我知道每个事件实际上都是一个带有类型成员的结构,例如:

// SDL_MouseButtonEvent

typedef struct{
     Uint8 type;
     Uint8 button;
     Uint8 state;
     Uint16 x, y;
} SDL_MouseButtonEvent;
Run Code Online (Sandbox Code Playgroud)

这怎么有意义?这是否以某种方式允许联合的类型成员表示联合当前的任何结构的类型?当一个联盟的每个成员除了一个结构并且每个结构包含那个成员时,会发生这种奇怪的效果吗?

你可以在不知道对象是哪个结构的情况下访问struct成员吗?

谢谢!

c c++ unions

7
推荐指数
2
解决办法
505
查看次数