-
对象成员:作为对象来说,成为了另外一个类的数据成员 对象成员指针:对象的指针,做为了另外一个类的数据的成员查看全部
-
注释快捷键:Ctrl+K+C。 取消注释快捷键:Ctrl+K+U。查看全部
-
对象指针的示例 C语言的malloc与C++的new都具有申请新内存空间的作用,但是new会调用对象的构造函数,而malloc不会调用查看全部
-
访问限制标号是针对类而不是针对一个类的不同对象,只要同属一个类就可以不用区分同一个类的不同对象。因为Array(const Array &arr) 是类的成员函数,所以有权限访问私有数据成员。如果是在main函数中直接m_iCount,那肯定就会报错了,不能访问,因为这是在类外不能访问私有数据成员。一个类的成员函数可以访问这个类的私有数据成员,我们要理解这个对类的访问限制,而不是针对对象。查看全部
-
浅拷贝和深拷贝的区别在于:如果对象中有初始化指针,那么浅拷贝会将两个不同对象的指针指向一个相同的地址,在释放内存的时候会发生不可预计的错误。而深拷贝则将两个不同对象的指针分别指向不同的地址,不会出现浅拷贝所引发的错误。查看全部
-
遍历对象数组查看全部
-
遍历对象数组查看全部
-
如果坐标类有一个默认构造函数(即不带参数的构造函数),那么可以在实例化线段对象的时候不使用初始化列表。 如果坐标类是有参数的构造函数时,那么在实例化线段对象的时候必须使用初始化列表(要把相应的值传给坐标类) 因为初始化列表会比构造函数先执行,再因为Coordinate是Line的对象成员,会优先于Line执行构造函数,所以如果不把Coordinate的那两个对象放在初始化列表中进行初始化,将会导致Coordinnate的对象使用默认构造函数进行初始化,然后你又没有写默认的构造函数,所以会报错,不过如果你写了默认构造函数,会导致多出来两个对象。查看全部
-
line的实现及main函数 #include "Line.h" #include <iostream> using namespace std; Line::Line() { 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 <stdlib.h> #include "Line.h" using namespace std; int main(void) { Line *p = new Line(); delete p; p = NULL; system("pause"); return 0; }查看全部
-
Coordinate的申明和实现 class Coordinate { public: Coordinate(); ~Coordinate(); void setX(int x); int getX(); void setY(int y); int getY(); private: int m_iX; int m_iY; }; #include "Coordinate.h" #include <iostream> using namespace std; Coordinate::Coordinate() { cout <<"Coordinate()" <<endl; } Coordinate::~Coordinate() { cout <<"~Coordinate()" <<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; } #include "Coordinate.h" class Line { public: Line(); ~Line(); void setA(int x,int y); void setB(int x,int y); void printInfo(); private: Coordinate m_coorA; Coordinate m_coorB; };查看全部
-
Line的申明,注意 他的private数据成员是Coordinate类的对象成员查看全部
-
Coordinate申明查看全部
-
当类coor的对象作为类line的成员时,实例化line时,先实例化coor,再实例化line, 删除line时,先删除line,再删除coor 想用line的参数来初始化coor时,必须使用初始化列表查看全部
-
当类coor的对象作为类line的成员时,实例化line时,先实例化coor,再实例化line, 删除line时,先删除line,再删除coor 想用line的参数来初始化coor时,必须使用初始化列表查看全部
-
1.const数据成员:跟const常量一样,只是一个在类里(而且是在构造函数里),一个在类外而已,都必须初始化。 2.const成员函数:即普通成员函数后再加const。它可以读取数据成员的值,但不能修改它们。若要修改 时,数据成员前必须加mutable。以指定其可被任意更改。mutable是ansi c++考虑到实际编程时,可能一定要修改const对象中的某个数据成员而设的。const成员函数可以被相同参数表的非const成员函数重载。 3.普通对象:可以调用任意成员函数。见下面的例子 4.const对象:仅能调用const成员函数,但是构造函数和析构函数是唯一不是const成员函数却可以被const对象调用的成员函数。 5.重点理解: const Coordinate *p = &coor const Coordinate &c = coor #include <iostream> using namespace std; class Coordinate { public: Coordinate(int x, int y) //构造函数 { // 设置X,Y的坐标 m_iX = x; m_iY = y; } // 实现常成员函数 void printInfo() const { cout << "("<< m_iX << "," << m_iY <<")" << endl; } public: int m_iX; int m_iY; }; int main(void) { const Coordinate coor(3, 5); // 创建常指针p const Coordinate *p = &coor; //错误写法&coor(3,5) // 创建常引用c const Coordinate &c = coor; //错误写法coor(3,5) coor.printInfo(); p->printInfo(); c.printInfo(); return 0; }查看全部
举报
0/150
提交
取消