C++拷贝构造函数 的理解
程序员文章站
2023-12-26 14:02:21
#include using namespace std; //拷贝构造函数的理解 class Point { public: Point(); Point(int X, int Y); ~Point(); Point(Point &p); void setPoint(int ......
#include <iostream> using namespace std; //拷贝构造函数的理解 class point { public: point(); point(int x, int y); ~point(); point(point &p); void setpoint(int x, int y) { x = x; y = y; } public: int x, y; }; point::point() { x = 0; y = 0; cout << "缺省样式的构造函数\n"; } point::point(int x, int y) { x = x; y = y; cout << "正常构造\n"; } point::~point() { cout << "点(" << x << "," << y << ")析构函数调用完毕\n"; } point::point(point &p) { x = p.x; y = p.y; cout << "拷贝构造函数\n"; } void f(point p) { cout << "函数f之中:" << endl; p.setpoint(p.x, p.y); } void f2(point &p) { cout << "函数f之中:" << endl; p.setpoint(p.x, p.y); } point g() { point a(7, 33); cout << "函数g之中:" << endl; return a; } int main(void) { point p1(10, 10); point p2; f(p2); f2(p1); return 0; } /*总结: 1.对于f()函数的调用,首先要“调用拷贝构造函数”以实现从实参到形参的传递 相当于语句 “形参 = 实参”(p = p2),当函数类型为引用时,就不会调用拷贝构造函数。 引用相当于别名 不申请内存空间. 2.对于构造函数和析构函数的调用时一一对应的,即“先构造的后析构”类似于栈的“先进后出”原则。 */
推荐阅读
-
C++拷贝构造函数 的理解
-
Qt4.7中 默认的构造函数
-
Python中浅拷贝和深拷贝的理解与研究
-
More Effective C++----(12)理解"抛出一个异常"与"传递一个参数"或"调用一个虚函数"间的差异
-
ThinkPHP中__initialize()和类的构造函数__construct()用法分析_php实例
-
HTML5实战与剖析之媒体元素(4、检测编解码器的支持和Audio构造函数)
-
深入理解JavaScript系列(4) 立即调用的函数表达式_javascript技巧
-
分析python对函数的理解介绍
-
C++ 中exit(),_exit(),return,abort()函数的区别
-
对PHP构造函数的理解