对象的作用域、可见域和生存期与普通变量,如int型变量的作用域、可见域和生存期并无不同,对象同样有局部、全局和类内(稍后就将对对象成员进行介绍)之分,对于在代码块中声明的局部对象,在代码块执行结束退出时,对象会被自动撤销,对应的内存会自动释放(当然,如果对象的成员函数中使用了new或malloc申请了动态内存,却没有使用delete或free命令释放,对象撤销时,这部分动态内存不会自动释放,造成内存泄露)。
跟踪调试,查看同一个类的不同对象的成员变量和成员函数在内存中的地址分配情况。结论:成员变量占据不同的内存区域(堆、栈);成员函数共用同一内存区域(代码段)。
|
g++ Point.cc -fno-elide-constructors
//在编译时取消返回值优化功能,就能看到函数 return 对象 时调用复制构造函数,不加这句话默认不会显示调用构造函数(可以在函数中加cout清楚查看是否显调用复制构造函数)