1.定义一个Person类,包含私有成员,int *age,string &name,一个Stu类,包含私有成员double *score,Person p1,写出Person类和Stu类的特殊成员函数,并写一个Stu的show函数,显示所有信息。
# include <iostream>
# include <iomanip> using namespace std; class Person {
private : int * age; string & name;
public : Person ( int age, string & name) : age ( new int ( age) ) , name ( name) { cout << "调用Person构造函数" << endl; } Person ( const Person & other) : age ( new int ( * ( other. age) ) ) , name ( other. name) { cout << "调用Person拷贝构造函数" << endl; } Person & operator = ( const Person & other) { * age = * ( other. age) ; cout << "调用Person拷贝赋值函数" << endl; return * this ; } ~ Person ( ) { delete age; cout << "调用Person析构函数" << endl; } int get_age ( ) ; string get_name ( ) ;
} ; int Person :: get_age ( ) { return * age;
} string Person :: get_name ( ) { return name;
} class Stu {
private : double * score; Person p1;
public : Stu ( double score, int age, string & name) : score ( new double ( score) ) , p1 ( age, name) { cout << "调用Stu构造函数" << endl; } Stu ( const Stu & other) : score ( new double ( * ( other. score) ) ) , p1 ( other. p1) { cout << "调用Stu拷贝构造函数" << endl; } Stu & operator = ( const Stu & other) { * score = * ( other. score) ; p1 = other. p1; cout << "调用Stu拷贝赋值函数" << endl; return * this ; } ~ Stu ( ) { delete score; cout << "调用Stu析构函数" << endl; } void show ( ) ;
} ; void Stu :: show ( ) { cout << "score = " << * score << " age = " << p1. get_age ( ) << " name = " << p1. get_name ( ) << endl;
} int main ( ) { string name = "张三" ; Stu a ( 78.4 , 18 , name) ; a. show ( ) ; }
思维导图