copy control

HasPtr类:

  1. /*
     * HasPtr.h
     *
     *  Created on: 2014-10-25
     *      Author: blade
     */
    #ifndef HASPTR_H_
    #define HASPTR_H_
    class HasPtr {
    public:
     HasPtr();
     virtual ~HasPtr();
     HasPtr(int *p, int i) : ptr(p), val(i) {}
     int *getPtr() const {
      return ptr;
     }
     int getInt() const {
      return val;
     }
     void setPtr(int *p) {
      ptr = p;
     }
     void setInt(int i) {
      val = i;
     }
     int getPtrVal() const {
      return *ptr;
     }
     void setPtrVal(int val) const {
      *ptr = val;
     }
    private:
     int *ptr;
     int val;
    };
    #endif /* HASPTR_H_ */
  2. /*
     * HasPtr.cpp
     *
     *  Created on: 2014-10-25
     *      Author: blade
     */
    #include "HasPtr.h"
    HasPtr::HasPtr() {
     // TODO Auto-generated constructor stub
    }
    HasPtr::~HasPtr() {
     // TODO Auto-generated destructor stub
    }
  3. main.cc

     

  4. /*
     * main.cc
     *
     *  Created on: 2014-10-25
     *      Author: Thinkpad
     */
    #include <iostream>
    #include <string>
    #include "HasPtr.h"
    using namespace std;
    
    void exercise13_20(){
     int i = 42;
     HasPtr p1(&i,42);
     HasPtr p2 = p1;
     cout << p2.getPtrVal() << endl;
     p1.setPtrVal(0);
     cout << p2.getPtrVal() << endl;
    
    }
    void bookCodePage420(){
     int obj = 0;
     HasPtr ptr1 (&obj,42);
     HasPtr ptr2(ptr1);
     cout << ptr1.getInt() << endl;
    }
    void wait_a_moment(){
     string wait;
     cin >> wait;
    }
    
    int main(){
      exercise13_20();
      wait_a_moment();
    }

    本文有课后练习编程题 :exercise13_20 ,涉及悬垂针,复制控制,复制构造函数,析构函数。

    说明:1.析构函数暂时未实现; 2.之前写c++类文件,方法实现一般在.cc文件内,如:HasPtr.cc中自动生成的默认构造函数,这一次我直接把方法写在头文件里,是否说明可以不要.cc文件,直接把代码写在.h文件内?3.exercise13_20在控制台打印了 42 和 0    两个数字,说明p1与p2的 ptr是指向是同一个地址;

  5.  

  6. d

你可能感兴趣的:(copy control)