为了账号安全,请及时绑定邮箱和手机立即绑定
  • 对象成员指针的特点https://img1.sycdn.imooc.com//5ac496f60001728b08070451.jpg

    查看全部
  • #include <iostream>
    using namespace std;
    class Coordinate
    {
        
    public:
    	Coordinate(int x, int y)
    	{
    		// 设置X,Y的坐标
    		m_iX=x;
            m_iY=y;
    	}
    public:
    	int m_iX;
    	int m_iY;
    };
    
    int main(void)
    {
        // 在堆上创建对象指针
    	Coordinate *p=new Coordinate();
    	p->m_iX=3;
    	p->m_iY=5;
        // 打印坐标
    	cout <<'('<<p->m_iX<<','<<p->m_iY<<')' << endl;
        // 销毁对象指针
    	delete p;
        p=NULL;
    	return 0;
    }

    失败原因在于未给变量赋值

    	Coordinate *p=new Coordinate();

    输出错误为

    运行失败
    index.cpp: In function 'int main()':
    index.cpp:21:31: error: no matching function for call to 'Coordinate::Coordinate()'
      Coordinate *p=new Coordinate();
                                   ^
    index.cpp:7:2: note: candidate: Coordinate::Coordinate(int, int)
      Coordinate(int x, int y)
      ^~~~~~~~~~
    index.cpp:7:2: note:   candidate expects 2 arguments, 0 provided
    index.cpp:3:7: note: candidate: constexpr Coordinate::Coordinate(const Coordinate&)
     class Coordinate
           ^~~~~~~~~~
    index.cpp:3:7: note:   candidate expects 1 argument, 0 provided
    index.cpp:3:7: note: candidate: constexpr Coordinate::Coordinate(Coordinate&&)
    index.cpp:3:7: note:   candidate expects 1 argument, 0 provided


    查看全部
    1 采集 收起 来源:编程练习

    2018-04-04

  • 造成的错误提示如下 运行失败 index.cpp: In function 'int main()': index.cpp:21:31: error: no matching function for call to 'Coordinate::Coordinate()' Coordinate *p=new Coordinate(); ^ index.cpp:7:2: note: candidate: Coordinate::Coordinate(int, int) Coordinate(int x, int y) ^~~~~~~~~~ index.cpp:7:2: note: candidate expects 2 arguments, 0 provided index.cpp:3:7: note: candidate: constexpr Coordinate::Coordinate(const Coordinate&) class Coordinate ^~~~~~~~~~ index.cpp:3:7: note: candidate expects 1 argument, 0 provided index.cpp:3:7: note: candidate: constexpr Coordinate::Coordinate(Coordinate&&) index.cpp:3:7: note: candidate expects 1 argument, 0 provided
    查看全部
    0 采集 收起 来源:编程练习

    2018-04-04

  • 指针赋值的方式有两种:

    1. 直接赋值:
      *p=m_iA;

    2. 对象赋值:
      (*P).m_iA;

    查看全部
  • Coordinate  是默认构造函数

    所以

    Coordinate *p=new Coordinate;

    or

    Coordinate *p=new Coordinate();

    都可以。


    查看全部
  • 对象成员,实例化 销毁 顺序

    查看全部
  • #include <iostream>
    using namespace std;
    class Coordinate
    {
        
    public:
        Coordinate(int x,int y):m_iX(x),m_iY(y)
    	{
        cout<<m_iX<<"   "<<m_iY<<endl;
    	}
    	// 打印坐标的函数
    	void printInfo()  
    	{
    	    cout<<'('<<m_iX<<','<<m_iY<<')'<<endl;
    	}
    private:
    	int m_iX;
    	int m_iY;
    };
    int main(void)
    {
    	//定义对象数组
        Coordinate coorArr[2]{{1,2},{3,4}};
    
    
    
    	//遍历数组,打印对象信息
    	for(int i = 0; i < 2; i++)
    	{
    		coorArr[i].printInfo();
    	}	
    	return 0;
    }

    D:\Documents\Dev-C++\test.cpp In function 'int main()':

    23 25 D:\Documents\Dev-C++\test.cpp [Warning] extended initializer lists only available with -std=c++11 or -std=gnu++11 [enabled by default]

    23 38 D:\Documents\Dev-C++\test.cpp [Warning] extended initializer lists only available with -std=c++11 or -std=gnu++11 [enabled by default]

    23 38 D:\Documents\Dev-C++\test.cpp [Warning] extended initializer lists only available with -std=c++11 or -std=gnu++11 [enabled by default]


    如图所示,在Dev C++上出现编译错误?但是通过了单元巩固???

    查看全部
    0 采集 收起 来源:单元巩固

    2018-04-03

  • #include "Line.h"
    #include"Coordinate2-5.h"
    #include<iostream>
    #include<stdlib.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;
    	   }
    	   按照本章所写代码,为什么会出现Error:未定义标识符cout???


    查看全部
    0 采集 收起 来源:[C++]对象成员

    2018-04-03

  • int main()
    {
    	Coordinate coor;
    	coor.m_iX=2;
    	coor.m_iY=3;
    	cout<<coor.m_iX<<"  "<<coor.m_iY<<endl;
    
    	system("pause");
    	return 0;
    }

    并没有调用析构函数???

    输出结果是:

          Coordinate();

           2    3

    所以

    不是数组就不用调用析构函数释放空间?

    查看全部
  • 对象调用内存占用和删除都遵循“先进后出”的原则。

    查看全部
    0 采集 收起 来源:[C++]对象成员

    2018-04-02

  • 走出知识的迷宫?

    不,

    我要一辈子徜徉在知识的海洋中——

    死而后已!

    查看全部
    0 采集 收起 来源:C++封装概述

    2018-04-02

  • https://img1.sycdn.imooc.com//5ac0b3c90001f1e219201080.jpg

    查看全部
  • // 创建常指针p   *

        const Coordinate *p =&coor;

        const Coordinate &c= coor; 

        // 创建常引用c   &


    查看全部
    0 采集 收起 来源:单元巩固

    2018-03-30

    1. 常对象只能调用常成员函数,不能调用普通成员函数

    2. 普通对象能够调用 常成员函数,也能够调用普通成员函数

    3. 常指针和常引用都只能调用对象的常成员函数
    4. 对象引用和对象已满都是对象的别名,一个对象有多个对象常引用
    查看全部
    0 采集 收起 来源:练习题

    2018-03-30

  • 对象指针

    查看全部
    0 采集 收起 来源:[C++]对象指针

    2018-03-29

举报

0/150
提交
取消
课程须知
本课程是C++初级课程 需要掌握C++语言基础语法 如果不太熟悉的话,可以观看: 《C++远征之起航篇》 《C++远征之离港篇》 《C++远征之封装篇(上)》
老师告诉你能学到什么?
1、对象数组的定义和使用 2、对象成员的定义和使用 3、深拷贝和浅拷贝 4、对象指针、对象引用的定义和使用 5、常对象指针、常对象引用、常成员函数的定义和使用

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!