#include<iostream>
#include<vector>
#include<assert.h>
#include<algorithm>
#include<string>
using namespace std;
class bird
{
public:
bird()=default;
bird(string const &t) :x(t){};
~bird()=default;
virtual void si(){ cout << "bird:" << x << endl; }
void bi(){
cout << "bi";
}
private:
string x;
};
class chick:public bird
{
public:
chick(string const &t) :x(t){};
virtual void si(){ cout << "chick:" << x<<endl; }
/*void bi(){
cout << "bi2";
}*/
private:
string x;
};
int main(){
string m{ "12345" };
int i;
chick c(m);
bird b(m);
bird *b1 = &c;
c.si();
b.si();
b1->si();
cin >> i;
}
</pre><pre name="code" class="cpp"><pre name="code" class="cpp">#include<iostream>
#include<vector>
#include<assert.h>
#include<algorithm>
#include<string>
using namespace std;
class bird
{
public:
bird()=default;
bird(string const &t) :x(t){};
~bird()=default;
void si(){ cout << "bird:" << x << endl; }
void bi(){
cout << "bi";
}
private:
string x;
};
class chick:public bird
{
public:
chick(string const &t) :x(t){};
void si(){ cout << "chick:" << x<<endl; }
/*void bi(){
cout << "bi2";
}*/
private:
string x;
};
int main(){
string m{ "12345" };
int i;
chick c(m);
bird b(m);
bird *b1 = &c;
c.si();
b.si();
b1->si();
cin >> i;
}
</pre><pre name="code" class="cpp">详细解释参看effective C++
</pre><pre name="code" class="cpp"> 第36条
<pre name="code" class="cpp">#include<iostream>
#include<vector>
#include<assert.h>
#include<algorithm>
#include<string>
using namespace std;
class bird
{
public:
bird()=default;
bird(string const &t) :x(t){};
~bird()=default;
void si(){ cout << "bird:" << x << endl; }
void bi(){
cout << "bi";
}
private:
string x;
};
class chick:public bird
{
public:
chick(string const &t) :x(t),bird(t){};
virtual void si(){ cout << "chick:" << x<<endl; }
/*void bi(){
cout << "bi2";
}*/
private:
string x;
};
int main(){
string m{ "12345" };
int i;
chick c(m);
bird b(m);
bird *b1 = &c;
c.si();
b.si();
b1->si();
cin >> i;
}