小编mja*_*mja的帖子

printf()将其参数转换为像cout一样的字符串吗?

我开始从C学习C++.最近,我刚读了一本关于C++的教程.在" 介绍流 "一节中,本书注意到:

<<运算符被重载,因此右侧的操作数可以是字符串或任何原始值.如果此操作数不是字符串,则<<运算符在将其发送到输出流之前将其转换为字符串形式.

所以我想知道printf()C中的函数是否具有相同的效果.如果没有,请告诉我他们两者之间的差异.

c c++

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

C++:我是否需要析构函数的"if"语句?

我认为我下面的Vector类的析构函数应该有if语句来取消它使用的内存.如果arr有一个成员,它将拥有delete arr.如果arr有很多成员,我必须使用delete[] arr.

你能告诉我这是必要的吗?

我的代码:

class Vector {
    double * arr;
    short dim;

public:
    Vector(short d = 0): dim(d) {
        arr = NULL;
        if (dim < 0) {
            dim = 0;
        } else {
            arr = new double[dim];
        }
    }

    ~Vector() {
        if (arr != NULL) {
            if (dim == 1) {
                delete arr;
            } else {
                delete[] arr;
            }

            arr = NULL;
            dim = 0;
        }
    }
};
Run Code Online (Sandbox Code Playgroud)

c++ destructor

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

C++:如何使用指针**的memcpy?

我用这个代码:

memcpy(arr[i], arr1[i], sizeof(arr1[i]));
Run Code Online (Sandbox Code Playgroud)

定义:

double** arr;           // arr1 is difined the same way.
arr = new double*[row];
for (int i = 0; i < row; ++i) {
    arr[i] = new double[col];
    memcpy(arr[i], arr1[i], sizeof(arr1[i]));
}
Run Code Online (Sandbox Code Playgroud)

我用命令构建它:g++ -Wall -Wextra -Wpedantic -c arr.cpp结果:

警告:'void*memcpy(void*,const void*,size_t)'调用中'sizeof'的参数与目标的指针类型'double*'相同; 预期的'double'或显式长度[-Wsizeof-pointer-memaccess]

memcpy(arr[i], arr1[i], sizeof(arr1[i]));
                             ^
Run Code Online (Sandbox Code Playgroud)

我不明白它是什么.你能告诉我如何让它正常工作吗?

c++ pointers c++11

0
推荐指数
2
解决办法
1320
查看次数

标签 统计

c++ ×3

c ×1

c++11 ×1

destructor ×1

pointers ×1