4.2---Point类的完整程序
例题1:
(1)主要思路
①先定义一个Point类,添加Point类的各种属性和行为(函数)。
②完成三种拷贝构造函数调用情况的测试
(2)流程图
(3)伪代码
class Point(int xx=0,int yy=0){}
Point::point(Point &p) //调用的第一种情况 构造函数
void fun1(Point p); //调用的第二种情况 作为形参
Point fun2(); //调用的第三种情况 作为函数的返回值类型
(4)代码
1 #include <iostream> 2 using namespace std; 3 class Point 4 { 5 public: 6 Point(int xx = 0, int yy = 0) 7 { 8 x = xx; 9 y = yy; 10 } 11 Point(Point& p); //声明 12 int getX() 13 { 14 return x; 15 } 16 int getY() 17 { 18 return y; 19 } 20 private: 21 int x, y; 22 }; 23 Point::Point(Point& p) //第一种情况 拷贝构造函数 24 { 25 x = p.x; 26 y = p.y; 27 cout << "拷贝构造函数的调用" << endl; 28 } 29 void fun1(Point p) //第二种情况 作为形参 30 { 31 cout << p.getX() << endl; 32 } 33 Point fun2() //第三种情况 作为返回值类型 34 { 35 Point a(1, 2); 36 return a; 37 } 38 int main() 39 { 40 Point a(4, 5); 41 Point b = a; //第一种情况 42 cout << b.getX() << endl; 43 fun1(b); //第二种情况 b作为fun1的实参 44 b = fun2(); //第三种情况 返回值为类对象 45 cout << b.getX() << endl; 46 return 0; 47 }
(5)总结
①类的拷贝构造函数的调用情况有三种
1.用一个类对象给另一个类对象赋值
2.类对象作为函数的形参出现
3.类对象作为函数的范围值类型时
②注意
当类的数据成员中有指针类型时,默认的拷贝构造函数实现的只能是浅拷贝,浅拷贝会带来数据安全方面的隐患,要实现正确的复制,也就是深拷贝,必须编写拷贝构造函数,即需要程序员手动编写拷贝构造函数来实现。
 
                    
                     
                    
                 
                    
                 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号