【c++】类管理指针成员】的更多相关文章

c++编程提倡使用标准库,一个原因是标准库大胆减少对指针的使用.但是许多程序是离不开指针的.包含指针的类需要特别注意复制控制,原因是复制指针时只复制指针中的地址,而不复制指针所指向的对象.这样当把一个对象复制给另一个对象后,当改变一个对象后,另一个对象也会收到牵连.另外一个对象释放掉后,其指针已经被释放掉.而另一个对象还不知道,其实该对象中的指针已经成为悬垂指针.这样再操作就会出现错误. 1. 定义智能指针类 原理:定义一个计数的类,所有复制的都是指向这一个类,每复制一次,该类加1一次:每析构一…
复印控制 --管理指针成员 引言: 包括指针的类须要特别注意复制控制.原因是复制指针时.一个带指针成员的指针类 class HasPtr { public: HasPtr(int *p,int i):ptr(p),val(i) {} int *get_ptr() const { return ptr; } int get_val() const { return val; } void set_ptr(int *p) { ptr = p; } void set_val(int i) { val…
C++类的指针成员与其他成员有所不同,指针成员指向一个内存地址,该地址的内存需要我没管理. 我现在分析一下为什么要管理指针成员. 有如下Student类,Student.h如下: [cpp] view plaincopy class Student { public: Student(int *books); virtual ~Student(); int *books; }; Student.cpp如下: [cpp] view plaincopy #include "Student.h&quo…
1.C++中一般採用以下三种方法之中的一个管理指针成员: (1)指针成员採取常规行为. 这种类具有指针的全部缺陷:具有指针成员且使用默认复制构造函数和赋值操作符,无法避免悬垂指针(两个对象的指针成员指向同一内存.删除了当中一个指针指向的内存时,还有一个指针将不再指向有效的内存空间). (2)类能够实现所谓的"智能指针"行为.引入计数类,智能指针类将一个计数器与类的对象相关联.使用计数跟踪该类有多少个对象共享同一指针.当计数为0时.删除对象. (3)类採取值行为.採用重载的复制构造函数.…
在一个类中,如果类没有指针成员,一切方便,因为默认合成的析构函数会自动处理所有的内存.但是如果一个类带了指针成员,那么需要我们自己来写一个析构函数来管理内存.在<<c++ primer>> 中写到,如果一个类需要我们自己写析构函数,那么这个类,也会需要我们自己写拷贝构造函数和拷贝赋值函数. 析构函数: 我们这里定义一个类HasPtr,这个类中包含一个int 类型的指针.然后定义一个析构函数,这个函数打印一句话. HasPtr.h 类的头文件 #pragma once #ifndef…
假设我们要设计一个包含以下操作的 Sales_data 类: 1.一个 isbn 成员函数,用于返回对象的 book_no 成员变量 2.一个 combine 成员函数,用于将一个 Sales_data 对象加到另一个 Sales_data 对象上 3.一个名为 add 的函数,执行两个 Sales_data 对象的加法 4.一个 read 函数,将数据从 istream 都入到 Sales_data 对象中 5.一个 print 函数,将 Sales_data 对象的值输出到 ostream…
2636: B3 指向基类的指针访问派生类的成员函数 时间限制: 1 Sec  内存限制: 128 MB 提交: 433  解决: 141 题目描述 领导类(Leader)和工程师类(Engineer)都是人类(Person)的派生类.请将下面代码中空缺的部分填上,使main函数中能通过指向Person类的指针,调用Leader和Engineer类中各自的成员函数show,输出相关的信息 //************* begin ***************** #include <iost…
[题目] 下面是一个数组类的声明与实现.请分析这个类有什么问题,并针对存在的问题提出几种解决方案.  C++ Code  1234567891011121314151617181920212223242526272829303132333435   template<typename T> class Array { public:     Array(), size(arraySize)     {         )             data = new T[size];     …
http://www.cnblogs.com/ylhome/archive/2009/10/06/1578478.html 一般我们使用的框架是VC提供的Wizard生成的MFC App Wizard(exe)框架,无论是多文档还是单文档,都存在指针获取和操作问题.下面这节内容主要是一般的框架,然后再讲多线程中的指针使用.使用到的类需要包含响应的头文件.首先一般获得本类(视,文档,对话框都支持)实例指针 this,用this的目的,主要可以通过类中的函数向其他类或者函数中发指针,以便于在非本类中…
From: http://hi.baidu.com/wxnxs/item/156a68f5b3b4ed18e3e3bd03   MFC中获取App,MainFrame,Doc和View类等指针的方法 1  获取应用程序类(App)指针 在任何类中都可用MFC全局函数AfxGetApp()获得 2 获取框架类(MainFrame)指针 1)在App中获得MainFrame指针CWinApp 中的  m_pMainWnd变量就是MainFrame的指针也可以: CMainFrame *pMain =…