在C ++代码中复制构造函数,指针,真或假问题

时间:2012-12-11 04:17:36

标签: c++ pointers copy

我对C ++很了解,所以如果有人能帮我解决这些TorF问题,那就太棒了。

判断对错:使用C ++,只有在将值传递给函数输入时才会使用类的复制构造函数。

判断对错:以下C ++函数madeA()是一个有效的函数实现。

ClassA{
public:
    int x;
    char *y;
};
void madeA(const A &t_a){
    t_a.x = 1;
    t_a.y = 0;
}

判断对错:以下C ++代码段是等效的。

void cmax(int a, int b, int *max){
    if(a>b) *ax = a;
    *max = b;
}

using namespace std;

void main(){
    int *max = new int;
    cmax(20, 5, max);
    cout<< *ax << endl;
}

下一个代码:

void cmax(int a, int b, int &max){
    if(a>b) max = a;
    max = b;
}

void(){
    int max;
    cmax(20, 5, ax);
    std::cout <<max<<std::endl;
 }

1 个答案:

答案 0 :(得分:1)

第一:错误
无论何时需要副本,都可以调用复制构造函数 简单示例:按值返回

第二:错误
您正在修改对const参数的引用的内容。它不应该编译,即使你使用一些指针hackery它也会导致未定义的行为

第三名:错误
第一个有内存泄漏第二个没有。
第二个代码片段甚至不会编译。