相关疑难解决方法(0)

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

C/C++ Struct vs Class

在完成我的C++类之后,在我看来,结构/类几乎完全相同,除了一些细微的差别.

我以前从未用C语言编程; 但我确实知道它有结构.在C中是否可以继承其他结构并设置公共/私有的修饰符?

如果你能在常规C中做到这一点,为什么我们需要C++?是什么让类与结构不同?

c++ struct class

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

为什么在这种情况下不调用复制构造函数?

这是一个小代码片段:

class A
{
public:
    A(int value) : value_(value)
    {
        cout <<"Regular constructor" <<endl;
    }

    A(const A& other)   : value_(other.value_)  
    {
        cout <<"Copy constructor" <<endl;
    }

private:
    int value_;
};
int main()
{
    A a = A(5);
}
Run Code Online (Sandbox Code Playgroud)

我假设输出将是"常规构造函数"(对于RHS),后面是LHS的"复制构造函数".所以我避免使用这种风格并始终将类的变量声明为A a(5);.但令我惊讶的是上面的代码从未调用过复制构造函数(Visual C++ 2008)

有没有人知道这种行为是由编译器优化,还是C++的一些记录(和可移植)功能引起的?谢谢.

c++ constructor copy-constructor

11
推荐指数
2
解决办法
2613
查看次数

C++中的默认结构初始化

假设我有一个看起来像这样的结构(一个POD):

struct Foo
{
  int i;
  double d;
};
Run Code Online (Sandbox Code Playgroud)

以下两行之间有什么区别:

Foo* f1 = new Foo;
Foo* f2 = new Foo();
Run Code Online (Sandbox Code Playgroud)

c++ constructor default initialization

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

struct Data d = {0}和struct Data d = {}之间有什么区别吗

我的代码中有两种类型的结构变量初始化.

#include<iostream>
#include<string>
using namespace std;
struct Data{
   int arr[5];
   float x;

};
int main(){
   struct Data d = {0};
   struct Data d1 = {};
   cout<<d.arr[0]<<d.x;
   cout<<d1.arr[0]<<d1.x<<endl;
   return 0;
}
Run Code Online (Sandbox Code Playgroud)

我正在运行代码广告获取0 0 0 0作为我的输出.请帮帮我,两者初始化有什么区别.

c++ struct initialization aggregate-initialization

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

memset,memcpy with new operator

我可以在C++中可靠地使用memset和memcpy运算符,并且内存分配了新的吗?

编辑:

是的,分配本机数据类型

BYTE *buffer = 0;
DWORD bufferSize = _fat.GetSectorSize();
buffer = new BYTE[bufferSize];

_fat.ReadSector(streamChain[0], buffer, bufferSize);

ULONG header = 0;
memcpy(&header, buffer, sizeof(ULONG));
Run Code Online (Sandbox Code Playgroud)

c++ memory-management

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

C++初始化没有指针的结构

我有一个C++结构

typedef struct DIFColor
{
    uint8_t r;
    uint8_t g;
    uint8_t b;


} DIFColor;
Run Code Online (Sandbox Code Playgroud)

我试图像这样初始化它:

DIFColor d = new DIFColor();

d.r = r;
d.g = g;
d.b = b;
Run Code Online (Sandbox Code Playgroud)

但编译器抱怨无法将指针转换为常规变量.什么指针?从这个问题我认为你可以简单地创建一个新的结构,而不必处理指针和动态内存分配new.它是否与我在C中初始化结构这一事实有关,而不是使用构造函数?

error: conversion from 'DIFColor*' to non-scalar type 'DIFColor' requested
Run Code Online (Sandbox Code Playgroud)

c++ struct pointers

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