#include <iostream>
class base
{
public:
virtual void print (int a)
{
std::cout << "a: " << a << " base\n";
}
virtual void print (int a, int b)
{
std::cout << "base\n";
}
};
class derived : public base
{
public:
virtual void print (double d)
{
std::cout << "derived\n";
}
};
int main ()
{
int i = 10;
double d = 10000.0;
base *b = new derived ();
b->print (i, i);
b->print (d);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
该函数的输出是: …
我用C++编写了这个小代码片段,输出也附加了.我无法理解为什么构造函数只被调用一次,而我可以看到两个调用是为析构函数.
据我所知,应该在第28行调用默认构造函数和重载赋值运算符.
有人可以对此有所了解:
1 #include <iostream>
2 using namespace std;
3
4 class ABC {
5 char c;
6 public:
7 ABC() {
8 cout << "default" << endl;
9 }
10 ABC(char c) {
11 this->c = c;
12 cout << c << endl;
13 }
14 ~ABC() {
15 cout << hex << this << " destructor " << c << endl;
16 }
17 void method() {
18 cout << "method" << endl;
19 }
20 void …
Run Code Online (Sandbox Code Playgroud)