-
对象成员指针的特点
查看全部 -
#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
查看全部 -
造成的错误提示如下 运行失败 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查看全部
-
指针赋值的方式有两种:
直接赋值:
*p=m_iA;对象赋值:
(*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++上出现编译错误?但是通过了单元巩固???
查看全部 -
#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???
查看全部 -
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
所以
不是数组就不用调用析构函数释放空间?
查看全部 -
对象调用内存占用和删除都遵循“先进后出”的原则。
查看全部 -
走出知识的迷宫?
不,
我要一辈子徜徉在知识的海洋中——
死而后已!
查看全部 -
查看全部
-
// 创建常指针p *
const Coordinate *p =&coor;
const Coordinate &c= coor;
// 创建常引用c &
查看全部 -
常对象只能调用常成员函数,不能调用普通成员函数
普通对象能够调用 常成员函数,也能够调用普通成员函数
常指针和常引用都只能调用对象的常成员函数
对象引用和对象已满都是对象的别名,一个对象有多个对象常引用
查看全部 -
对象指针
查看全部
举报