相关疑难解决方法(0)

未命名/匿名命名空间与静态函数

C++的一个特性是能够创建未命名(匿名)命名空间,如下所示:

namespace {
    int cannotAccessOutsideThisFile() { ... }
} // namespace
Run Code Online (Sandbox Code Playgroud)

您会认为这样的功能是无用的 - 因为您无法指定命名空间的名称,所以无法从外部访问其中的任何内容.但是这些未命名命名空间可以在它们创建的文件访问,就好像你有一个隐含的using子句.

我的问题是,为什么或何时使用静态函数会更好?或者他们基本上是两种做同样事情的方式?

c++ namespaces

486
推荐指数
8
解决办法
20万
查看次数

为什么以及何时在C编程中使用静态结构?

我已经被要求修改的驱动程序代码中经常看到静态结构声明.

我试图寻找有关为什么structs声明为静态的信息以及这样做的动机.

你能有人帮我理解这个吗?

c static struct

37
推荐指数
5
解决办法
5万
查看次数

在C++中只使用静态方法的类的优点

即使C++没有静态类,来自Java背景我也会创建一个类似于Util只包含静态方法的辅助类.这被认为是不好的风格还是通常的做法?我看到的一个替代方案是使用C函数(根本没有类上下文).有什么其他选择吗?有什么优点和缺点,在哪种情况下我会使用其中任何一种.

在c ++中定义一堆静态方法建议使用命名空间静态函数作为一种替代方法,尽管我没有看到static没有类上下文的关键字有什么影响.

c++ static

29
推荐指数
4
解决办法
3万
查看次数

仅功能对象的内存结构?

假设我们有一个看起来像这样的类:

class A 
{ 
    public:
        int FuncA( int x );
        int FuncB( int y );

        int a;
        int b;
};
Run Code Online (Sandbox Code Playgroud)

现在,我知道这个类的对象将只用这两个对象在内存中进行布局ints.也就是说,如果我创建一个类实例的向量A,则ints一个实例将有两个实例,然后ints是第二个实例的两个实例.对象是POD.

但是让我们说这个课程看起来像这样:

class B
{ 
    public:
        int FuncA( int x );
        int FuncB( int y );
};
Run Code Online (Sandbox Code Playgroud)

这个类的对象在内存中看起来像什么?如果我用向量中的实例填充B向量?向量中有什么?我被告知非虚拟成员函数最终被编译为自由函数,这些函数与声明它们的类的实例完全无关(虚函数也是,但是对象存储带有函数指针的vtable) .访问限制仅仅是语义上的"人"级别.只有类(和vtable等)的数据成员实际上构成了对象的内存结构.

那么,类的对象B在内存中看起来又是什么样的呢?它是某种占位符价值吗?必须有东西,我可以拿对象的地址.它必须指向一些东西.无论是什么,编译器是否允许内联/优化这些对象并将方法调用视为正常的自由函数调用?如果我创建这些的向量并在每个对象上调用相同的方法,编译器是否可以消除向量并用一堆普通调用替换它?

我只是好奇.

c++

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

我需要什么类型的课程?

我想创建一个可以在不实例化的情况下使用的类,但也可以实例化.我认为类似于数学课.

谢谢

c++

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

静态阶级现实生活的意义

我在static关键字上读了很多,我只找到了静态变量,静态函数,但是没有静态类的讨论,请你解释一下这个.

  • 为什么我们在c ++中使用静态类?
  • 为什么我们介绍这种类?
  • 给出静态类的物理意义?
  • 给出静态类的真实例子?
  • 如果有任何限制,那么告诉我什么?

我在等你的回复.提前致谢.

c++ oop static class

-1
推荐指数
1
解决办法
929
查看次数

标签 统计

c++ ×5

static ×3

c ×1

class ×1

namespaces ×1

oop ×1

struct ×1