zoukankan      html  css  js  c++  java
  • C++初步 2

    对象数组:

         Coordinate coord[3];  栈区           Coordinate *p=new Coordinate[3];    堆区     

    /*
     * Coordinate.h
     *
     *  Created on: 2017年7月13日
     *      Author: rmbp
     */
    
    class Coordinate
    {
    public:
        Coordinate();
        ~Coordinate();
    public:
        int m_iX;
        int m_iY;
    };
    
    /*
     * Coordinate.cpp
     *
     *  Created on: 2017年7月13日
     *      Author: rmbp
     */
    #include"Coordinate.h"
    #include<iostream>
    using namespace std;
    
    Coordinate::Coordinate()
    {
        cout<<"Coordinate"<<endl;
    }
    Coordinate::~Coordinate()
    {
        cout<<"~Coordinate"<<endl;
    }
    
    #include <iostream>
    #include <string>
    #include "Coordinate.h"
    using namespace std;
    
    int main(void)
    {
       Coordinate coor[3];
       coor[0].m_iX=3;
       coor[0].m_iY=5;
    
       Coordinate *p=new Coordinate[3];
       p->m_iX=7;
       p[0].m_iY=9;
    
       p++; //第二个元素
       p->m_iX=11;
       p[0].m_iY=13;//输出的是第二个元素
    
       p[1].m_iX=15;
       p++;
       p->m_iY=17;
    
       for(int i=0;i<3;i++)
       {
           cout<<coor[i].m_iX<<endl;
           cout<<coor[i].m_iY<<endl;
       }
       for(int j=0;j<3;j++)
       {
           cout<<p->m_iX<<endl;
           cout<<p->m_iY<<endl;
           p--;
       }
    
       p++;
       delete []p;
       p=NULL;
    
       return 0;
    }
    View Code

    对象成员:

    /*
     * Coordinate.h
     *
     *  Created on: 2017年7月13日
     *      Author: rmbp
     */
    class Coordinate
    {
    public:
        Coordinate(int x,int y);
        ~Coordinate();
        void setX(int x);
        int getX();
        void setY(int y);
        int getY();
    private:
        int m_iX;
        int m_iY;
    };
    /*
     * Line.h
     *
     *  Created on: 2017年7月13日
     *      Author: rmbp
     */
    #include"Coordinate.h"
    class Line
    {
    public:
        Line(int x1,int y1,int x2,int y2);
        ~Line();
        void setA(int x,int y);
        void setB(int x,int y);
        void printInfo();
    private:
        Coordinate m_coorA;
        Coordinate m_coorB;
    };
    /*
     * Coordinate.cpp
     *
     *  Created on: 2017年7月13日
     *      Author: rmbp
     */
    #include"Coordinate.h"
    #include<iostream>
    using namespace std;
    
    Coordinate::Coordinate(int x,int y)
    {
        m_iX=x;
        m_iY=y;
        cout<<"Coordinate:"<<m_iX<<","<<m_iY<<endl;
    }
    Coordinate::~Coordinate()
    {
        cout<<"~Coordinate:"<<m_iX<<","<<m_iY<<endl;
    }
    void Coordinate::setX(int x)
    {
        m_iX=x;
    }
    int Coordinate::getX()
    {
        return m_iX;
    }
    void Coordinate::setY(int y)
    {
        m_iY=y;
    }
    int Coordinate::getY()
    {
        return m_iY;
    }
    /*
     * Line.cpp
     *
     *  Created on: 2017年7月13日
     *      Author: rmbp
     */
    #include<iostream>
    #include"Line.h"
    using namespace std;
    
    Line::Line(int x1,int y1,int x2,int y2):m_coorA(x1,y1),m_coorB(x2,y2)  //初始化列表
    {
        cout<<"Line"<<endl;
    }
    Line::~Line()
    {
        cout<<"~Line"<<endl;
    }
    void Line::setA(int x,int y)
    {
        m_coorA.setX(x);
        m_coorA.setY(y);
    }
    void Line::setB(int x,int y)
    {
        m_coorB.setX(x);
        m_coorB.setY(y);
    }
    void Line::printInfo()
    {
        cout<<"("<<m_coorA.getX()<<","<<m_coorA.getY()<<")"<<endl;
        cout<<"("<<m_coorB.getX()<<","<<m_coorB.getY()<<")"<<endl;
    }
    
    #include <iostream>
    #include <string>
    
    #include "Line.h"
    using namespace std;
    
    int main(void)
    {
        Line *p=new Line(1,2,3,4);
        p->printInfo();
        delete p;
        p=NULL;
       return 0;
    }
    View Code

    浅拷贝:

    /*
     * Array.h
     *
     *  Created on: 2017年7月13日
     *      Author: rmbp
     */
    
    #ifndef ARRAY_H_
    #define ARRAY_H_
    class Array
    {
    public:
        Array();
        Array(const Array &arr);
        ~Array();
        void setCount(int count);
        int getCount();
    private:
        int m_iCount;
    };
    
    #endif /* ARRAY_H_ */
    
    /*
     * Array.cpp
     *
     *  Created on: 2017年7月13日
     *      Author: rmbp
     */
    #include"Array.h"
    #include<iostream>
    using namespace std;
    Array::Array()
    {
        cout<<"Array"<<endl;
    }
    Array::Array(const Array &arr)
    {
        m_iCount=arr.m_iCount;
        cout<<"Array &"<<endl;
    }
    Array::~Array()
    {
        cout<<"~Array"<<endl;
    }
    void Array::setCount(int count)
    {
        m_iCount=count;
    }
    int Array::getCount()
    {
        return m_iCount;
    }
    
    #include <iostream>
    #include <string>
    
    #include "Array.h"
    using namespace std;
    
    int main(void)
    {
       Array arr1;
       arr1.setCount(5);
    
       Array arr2(arr1);
       cout<<"arr2.m_iCount:"<<arr2.getCount()<<endl;
       return 0;
    }
    View Code
     

    Array

    Array&

    arr2.m_iCount:5

    ~Array

    ~Array

    深拷贝:

    View Code

    Array

    Array &

    0

    1

    2

    3

    4

    0

    1

    2

    3

    4

    ~Array

    ~Array

     

    对象指针:

    /*
     * Coordinate.h
     *
     *  Created on: 2017年7月13日
     *      Author: rmbp
     */
    
    class Coordinate
    {
    public:
        Coordinate();
        ~Coordinate();
    public:
        int m_iX;
        int m_iY;
    };
    
    /*
     * Coordinate.cpp
     *
     *  Created on: 2017年7月13日
     *      Author: rmbp
     */
    #include"Coordinate.h"
    #include<iostream>
    using namespace std;
    Coordinate::Coordinate()
    {
        cout<<"Coordinate"<<endl;
    }
    Coordinate::~Coordinate()
    {
        cout<<"~Coordinate"<<endl;
    }
    
    /*
     * demo.cpp
     *
     *  Created on: 2017年7月13日
     *      Author: rmbp
     */
    #include<iostream>
    #include<stdlib.h>
    #include"Coordinate.h"
    using namespace std;
    int main(void)
    {
        Coordinate *p1=NULL;
        p1=new Coordinate;
        Coordinate *p2=new Coordinate();
        p1->m_iX=10;
        p1->m_iY=20;
        (*p2).m_iX=30;
        (*p2).m_iY=40;
        cout<<p1->m_iX+(*p2).m_iX<<endl;
        cout<<p1->m_iY+(*p2).m_iY<<endl;
    
        delete p1;
        p1=NULL;
        delete p2;
        p2=NULL;
        return 0;
    }
    View Code

    Coordinate

    Coordinate

    40

    60

    ~Coordinate

    ~Coordinate

     

    对象成员指针:

     

    /*
     * Coordinate.h
     *
     *  Created on: 2017年7月13日
     *      Author: rmbp
     */
    
    class Coordinate
    {
    public:
        Coordinate(int x,int y);
        ~Coordinate();
        int getX();
        int getY();
    public:
        int m_iX;
        int m_iY;
    };
    /*
     * Coordinate.cpp
     *
     *  Created on: 2017年7月13日
     *      Author: rmbp
     */
    #include"Coordinate.h"
    #include<iostream>
    using namespace std;
    Coordinate::Coordinate(int x,int y)
    {
        m_iX=x;
        m_iY=y;
        cout<<"Coordinate"<<m_iX<<","<<m_iY<<endl;
    }
    Coordinate::~Coordinate()
    {
        cout<<"~Coordinate"<<m_iX<<","<<m_iY<<endl;
    }
    int Coordinate::getX()
    {
        return m_iX;
    }
    int Coordinate::getY()
    {
        return m_iY;
    }
    /*
     * Line.h
     *
     *  Created on: 2017年7月13日
     *      Author: rmbp
     */
    #include"Coordinate.h"
    class Line
    {
    public:
        Line(int x1,int y1,int x2,int y2);
        ~Line();
        void printInfo();
    private:
        Coordinate *m_pCoorA;
        Coordinate *m_pCoorB;
    };
    /*
     * Line.cpp
     *
     *  Created on: 2017年7月13日
     *      Author: rmbp
     */
    #include<iostream>
    #include"Line.h"
    using namespace std;
    Line::Line(int x1,int y1,int x2,int y2)
    {
        m_pCoorA=new Coordinate(x1,y1);
        m_pCoorB=new Coordinate(x2,y2);
        cout<<"Line()"<<endl;
    }
    Line::~Line()
    {
        delete m_pCoorA;
        m_pCoorA=NULL;
        delete m_pCoorB;
        m_pCoorB=NULL;
        cout<<"~Line()"<<endl;
    }
    void Line::printInfo()
    {
        cout<<"printInfo()"<<endl;
        cout<<"("<<m_pCoorA->getX()<<","<<m_pCoorA->getY()<<")"<<endl;
        cout<<"("<<m_pCoorB->getX()<<","<<m_pCoorB->getY()<<")"<<endl;
    }
    /*
     * demo.cpp
     *
     *  Created on: 2017年7月13日
     *      Author: rmbp
     */
    #include<iostream>
    #include<stdlib.h>
    #include"Line.h"
    using namespace std;
    int main(void)
    {
        Line *p=new Line(1,2,3,4);
        p->printInfo();
        delete p;
        p=NULL;
        cout<<sizeof(p)<<endl;
        cout<<sizeof(Line)<<endl;
        return 0;
    }
    View Code

    printInfo()

    (1,2)

    (3,4)

    ~Coordinate1,2

    ~Coordinate3,4

    ~Line()

    8

    16  //(64位结果,32位减半)

     

    this指针: 

    /*
     * Array.h
     *
     *  Created on: 2017年7月13日
     *      Author: rmbp
     */
    
    class Array
    {
    public:
        Array(int len);
        ~Array();
        void setLen(int len);
        int getLen();
        void printInfo();
    private:
        int len;
    };
    /*
     * Array.cpp
     *
     *  Created on: 2017年7月13日
     *      Author: rmbp
     */
    #include"Array.h"
    #include<iostream>
    using namespace std;
    Array::Array(int len)
    {
        this->len=len;
    }
    Array::~Array()
    {
    
    }
    void Array::setLen(int len)
    {
        this->len=len;
    }
    int Array::getLen()
    {
        return len;
    }
    void Array::printInfo()
    {
    
    }
    #include <iostream>
    #include <string>
    #include "Array.h"
    using namespace std;
    
    int main(void)
    {
       Array arr1(10);
        cout<<arr1.getLen()<<endl;
       return 0;
    }
    View Code
    /*
     * Array.h
     *
     *  Created on: 2017年7月13日
     *      Author: rmbp
     */
    
    class Array
    {
    public:
        Array(int len);
        ~Array();
        Array& setLen(int len);
        int getLen();
        Array& printInfo();
    private:
        int len;
    };
    /*
     * Array.cpp
     *
     *  Created on: 2017年7月13日
     *      Author: rmbp
     */
    #include"Array.h"
    #include<iostream>
    using namespace std;
    Array::Array(int len)
    {
        this->len=len;
    }
    Array::~Array()
    {
    
    }
    Array& Array::setLen(int len)
    {
        this->len=len;
        return *this;
    }
    int Array::getLen()
    {
        return len;
    }
    Array& Array::printInfo()
    {
        cout<<"len="<<len<<endl;
        return *this;
    }
    #include <iostream>
    #include <string>
    #include "Array.h"
    using namespace std;
    
    int main(void)
    {
       Array arr1(10);
       arr1.printInfo().setLen(5).printInfo();
       return 0;
    }
    View Code

    len=10

    len=5

    常对象成员和常成员函数:

           常成员函数中不能修改数据成员的值。  func() const{}

    常指针和常引用:

           Coordinate coor1(3,5);

           const Coordinate &coor2=coor1;  只能调用常函数

           const Coordinate *pCoor=&coor1;

         ------------

           Coordinate coor1(3,5);

           Coordinate coor2(7,9);

           Coordinate *const pCoor=&coor1;   //pCoor具有读写权限

     

     

  • 相关阅读:
    jQuery事件篇---高级事件
    Cookie处理
    JDBC技术
    JSP行为
    JSP九大内置对象
    JSP指令学习
    Oracle数据库学习之存储过程--提高程序执行的效率
    数据库操作之游标
    PL/SQL编程接触
    数据库数据的查询----连接查询
  • 原文地址:https://www.cnblogs.com/zf723/p/7161454.html
Copyright © 2011-2022 走看看