我们可以声明一个类的构造函数是朋友吗?我认为不可能.但我读到的地方可能是,但我无法做到.如果是,请提供一些示例代码.
#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)
在两次调用析构函数时,构造函数被调用一次这里有什么好处?这是未定义的行为吗?
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运算符的确切用法是什么?
下面的代码编译正常,但不执行
#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)
这很好用.为什么会这样?