小编jsp*_*p99的帖子

构造函数在C++中链接

我对构造函数链的理解是,当一个类中有多个构造函数(重载的构造函数)时,如果其中一个构造函数试图调用另一个构造函数,那么这个过程称为CON​​STRUCTOR CHAINING,这在C++中是不受支持的.最近我在阅读在线资料时遇到了这一段......就像这样......

您可能会发现自己处于要编写成员函数以将类重新初始化为默认值的情况.因为您可能已经有一个构造函数来执行此操作,您可能会尝试从您的成员函数中调用构造函数.如前所述,链接构造函数调用在C++中是非法的.您可以从函数中的构造函数中复制代码,这将起作用,但会导致重复的代码.在这种情况下,最好的解决方案是将代码从构造函数移动到新函数,并让构造函数调用您的函数来完成初始化数据的工作.

调用构造函数的成员函数是否也在构造函数链接下?请在C++中详细介绍这个主题.

c++ constructor specifications constructor-chaining

32
推荐指数
2
解决办法
4万
查看次数

何时数组名称或函数名称"转换"为指针?(在C中)

1) 误解:

  • 每当用C语言声明数组时,都会隐式创建指向数组第一个元素的指针(数组的名称).(是吗?我不这么认为!)

  • 这个页面的前两行(虽然我不确定信息的正确性)说明相同.

    正如我们所看到的,当我们声明一个数组时,为数组的单元分配了一个连续的内存块,并且还分配了一个指针单元(适当类型)并初始化为指向数组的第一个单元.

  • 但是,当我输出包含的地址该指针和地址该指针,就变成是相同的.所以,我认为毕竟不会创建指针.

2)我从这个问题中选了这个.

  • 在大多数情况下,数组名称将转换为指针.

任何人都可以详细解释编译器何时决定数组名称转换为指针,为什么

PS:请解释一下功能.此外,在这个环节中,已经给出,说是一个函数int square(int,int),任意 square,&square,*square,**square是指同一个函数指针.你可以解释吗?

编辑:代码段

int fruits[10];
printf("Address IN constant pointer is %p\n",  fruits);
printf("Address OF constant pointer is %p\n", &fruits); 
Run Code Online (Sandbox Code Playgroud)

输出:

Address IN constant pointer is 0xbff99ca8
Address OF constant pointer is 0xbff99ca8
Run Code Online (Sandbox Code Playgroud)

c arrays pointers function-pointers function

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

初始化和分配

INITIALIZATION和ASSIGNMENT之间的区别究竟是什么?

PS:如果可能的话,请特别提供C和C++中的示例.

实际上,我对这些陈述感到困惑......

C++提供了另一种初始化成员变量的方法,它允许我们在创建成员变量时而不是之后初始化成员变量.这是通过使用初始化列表完成的.使用初始化列表与执行隐式赋值非常相似.

c c++

16
推荐指数
3
解决办法
2万
查看次数

静态类型绑定与动态类型绑定

我理解类型绑定的含义.如果我错了请纠正我 -

类型绑定是将声明的变量"关联"到特定类型
(由编译器完成)的过程.

类型绑定可以分类为 -
静态类型绑定
动态类型绑定

静态类型绑定可以通过两种类型的声明来实现 -

http://sankofa.loc.edu/CHU/WEB/Courses/Cosi350/Ch4/bound.2.gif

它清晰到这里.
但现在,什么是动态类型绑定?(不是定义)我知道这意味着变量在运行时与"类型"相关联,

http://sankofa.loc.edu/CHU/WEB/Courses/Cosi350/Ch4/bound.3.gif

有关它的更多信息,如 -

  1. 为什么动态类型绑定?
  2. 哪种编程语言可用作功能?
  3. 与静态类型绑定相比,它有哪些优点和缺点?

通过赋值语句指定

你能提供更多的信息吗?是否应仅使用赋值语句指定?

binding types dynamic

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

avformat_open_input()有什么作用?

我遵循代码与C中的ffmpeg库一起使用.ffmpeg库的文档很少,很难理解每个函数的确切功能.
我理解代码(正在做什么).但我缺乏清晰度.有人可以帮帮我吗?

Q1)将struct AVFrameContext****和**filename(所需的最小非NULL参数)传递给函数avformat_open_input().顾名思义,输入文件是"打开"的.怎么样 ?

c ffmpeg

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

为什么在将AVFrame从一种格式转换为另一种格式时需要缓冲区?

我指的是这个源代码.这里提供的代码片段来自代码中的行(114-138).这是使用ffmpeg库.任何人都可以解释为什么程序中需要以下代码?

// Determine required buffer size and allocate buffer
numBytes=avpicture_get_size(PIX_FMT_RGB24, pCodecCtx->width,
              pCodecCtx->height);
buffer=(uint8_t *)av_malloc(numBytes*sizeof(uint8_t)); 
Run Code Online (Sandbox Code Playgroud)

从某种意义上说,我理解以下函数将目标帧与缓冲区相关联.但是必要性是什么?

avpicture_fill((AVPicture *)pFrameRGB, buffer, PIX_FMT_RGB24, pCodecCtx->width, pCodecCtx->height);  
Run Code Online (Sandbox Code Playgroud)

PS:我尝试删除缓冲区并编译程序.它被编译了.但它显示以下运行时错误.

[swscaler @ 0xa06d0a0]坏dst图像指针
分段错误(核心转储)

c ffmpeg

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

浮点和定点表示的优点和缺点

我在过去三天一直在努力了解浮点和定点表示之间的确切差异.我很困惑阅读材料,我无法确定什么是对的,什么是错的.

其中一个问题是"精确","尾数","非规范化","下溢"等技术术语的含义.

任何人都可以通过例子给出差异吗?

我迄今能够找到的要点(能够清楚地理解)如下: -

浮点 -
1. 优势 提供非常大的范围
2. 缺点减少数量

固定点 -
1. 优势数字准确表示 (涉及'货币'时使用)
2.缺点提供非常有限的范围

但我知道存在很多差异(主要是优点和缺点).任何人都可以列出解释吗?

floating-point fixed-point

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

如何在boost图中查找顶点是否存在?

我有一个增强图(带有捆绑属性)。我想查找图形中是否已经存在具有特定值的顶点。有人可以帮我弄这个吗?在这里,我展示了我现有代码的 MWE:

住在 Coliru

#include <iostream>
#include <string>
#include <vector>
#include <boost/graph/adjacency_list.hpp>

struct mytuple
{
    int e1;
    int e2;
    int s;

    bool operator==(const mytuple& a) const
    {
        return ((e1 == a.e1) && (e2 == a.e2) && (s == a.s));
    }
};

struct MyVertex {
    std::string comments;
    int field1;
    mytuple value;
    MyVertex(std::string comments = std::string()) : comments(comments) {}
};

struct MyEdge {
    std::string label;
    MyEdge(std::string label = std::string()) : label(label) {}
};

// Define the graph with the vertex as a …
Run Code Online (Sandbox Code Playgroud)

c++ search boost graph

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

具有返回值的函数(C++)

当main()调用一个返回值为某种数据类型(原始或用户定义)的函数时,调用该函数的语句"通常"是一个赋值.

例如: -

class complex
{

private:

    int real;
    int imag;

public:

    complex();
    complex(int r,int i);
    complex operator + (complex c);
};
Run Code Online (Sandbox Code Playgroud)

假设,我的重载"+"的定义是这样的 -

complex complex::operator + (complex c)
{
    this->real = this->real + c.real;
    this->imag = this->imag + c.imag;
    return *this;
}
Run Code Online (Sandbox Code Playgroud)

我的主要功能如下 -

int main()
{
    complex c1;
    complex c2(5,4);
    c1+c2;
}
Run Code Online (Sandbox Code Playgroud)

在上面的main()中,考虑语句c1 + c2.编译器将其视为c1.operator +(c2).当main调用此函数时,它会向main()返回一个值.这个返回值会发生什么变化?

c++ function

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

内置数据类型与C++中的用户定义数据类型

构造器从灰尘中构建对象.

这是我最近多次报道过的一个声明.

在初始化内置数据类型变量时,该变量也必须"由灰尘构建".那么,是否还有内置类型的构造函数?

此外,编译器如何以不同方式处理BUILT IN DATATYPE和USER DEFINED CLASS,同时为每个创建实例?我的意思是关于构造函数,析构函数等的细节.

关于堆栈溢出的这个查询是关于相同的,它有一些非常有趣的细节,最有趣的是Bjarne所说的......!

内置类型有默认构造函数吗?

c++ constructor

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