#include <iostream>
#include <string>
using namespace std;
class Person
{
public:
Person(std::string st, int a, double ht) : name(st), age(a), height(ht)
{
cout << " normal constructor" << endl;
}
Person(const Person&p)
{
name = p.name;
age = p.age;
height = p.height;
son = p.son;
cout << " copy constructor " << endl;
}
void print()
{
std::cout << name << ", " << age << ", " << height << endl;
}
//private:
std::string name;
int age;
double height;
Person *son;
};
class HowMany
{
static int objectCount;
public:
HowMany() { objectCount++; }
~HowMany()
{
objectCount--;
cout << "~HowMany()" << endl;
}
static void print(const string& msg = "")
{
if (msg.size() != 0)
cout << msg << ": ";
cout << objectCount << endl;
}
};
int HowMany::objectCount = 0;
int main()
{
HowMany m1;
HowMany::print("xiao cui");
HowMany m2;
HowMany::print("ai ni");
cout << endl << endl;
Person p1("小崔",18,180); // 输出是normal constructor
p1.son = new Person("崔", 2,100);
p1.print();
p1.son->print();
Person p2(p1); // 输出是 copy constructor
p1.age = 20;
p1.print(); // 输出的age = 20.
p2.print(); // 输出的age = 18.
p2.son->height = 105;
p1.son->print(); // 输出的height 为105,
p2.son->print(); // 输出的height 为105,
Person p3 = p1; // 输出是 copy constructor
return 0;
}
拷贝构造函数
最新推荐文章于 2024-06-07 21:06:43 发布