小编Shr*_*yas的帖子

构造函数可以在c ++中成为朋友吗?

我们可以声明一个类的构造函数是朋友吗?我认为不可能.但我读到的地方可能是,但我无法做到.如果是,请提供一些示例代码.

c++

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

解释这个c ++代码

#include <iostream>
using namespace std;

class A
{
    int n;
public:
    A()
    {
        cout << "Constructor called" << endl;
    }
    ~A()
    {
        cout << "Destructor called" << endl;
    }
};

int main()
{
    A a;           //Constructor called
    A b = a;       //Constructor not called
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

输出:

Constructor called
Destructor called
Destructor called
Run Code Online (Sandbox Code Playgroud)

在两次调用析构函数时,构造函数被调用一次这里有什么好处?这是未定义的行为吗?

c++ constructor destructor object

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

在免费商店创建对象有什么用?

void fun()
{
    A *a = new A;   //Here A is a class
}                   //a should be deleted in fun()'s scope

int main()
{
    fun();
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

创建的对象存在于免费存储中,main()函数无法使用.为什么要在免费商店上创建对象.是的,我们可以将对象引用传递给main函数,但我们甚至可以传递对象的副本(即使不使用new运算符创建).那么new和delete运算符的确切用法是什么?

c++ heap constructor new-operator dynamic-allocation

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

当我们在指向未使用new运算符分配的对象的指针上使用delete时会发生什么?

下面的代码编译正常,但不执行

#include <iostream>
using namespace std;

int main()
{
    int *a;
    int b = 5;
    a = &b;
    cout << *a << endl;
    delete a;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

编辑:

int main()
{
    int *a = 0;
    delete a;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

这很好用.为什么会这样?

c++ new-operator delete-operator

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