-
对象成员:组合概念的应用
实例化的时候,先实例化被组合的部分,再实例化自身。析构的时候刚好相反
查看全部 -
delete []xxx 是析构数组所有对象
查看全部 -
常成员函数特殊点在于,在常成员函数中不能改变数据成员的值。 常成员函数是常对象的使用函数。
查看全部 -
注意new和c语言中memory alloc的区别,后者只是单纯的分配内存,前者却可以在这个过程中自动的调用构造函数,对内存空间进行结构化处理。
查看全部 -
在类对象有指针时,简单的拷贝构造函数会将指针复制,导致两个类的指针指向了相同区域,此时如果进行类的内存释放delete,会对一个区域进行两次内存释放,从而引发崩溃。
为了解决这个问题,需要在复制构造函数中指明,指针数组使用NEW来申请了一块新的内存,之后再用循环来将原数组指针指向的每一个值赋与新的指针
查看全部 -
对于复合类来说,子类的构造函数中如果存在参数,那么母类必须通过初始化列表的形式来对母类对象中的子类对象进行赋值。如图中的坐标系类
查看全部 -
在使用new申请出类的数组内存时,使用delete释放内存必须让指针指向类数组的第一个对象位置
查看全部 -
#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
Coordinate const *p = &coor;
// 创建常引用c
Coordinate const &c = coor;
coor.printInfo();
p->printInfo();
c.printInfo();
return 0;
}查看全部 -
#include <iostream>
using namespace std;
class Coordinate
{
public:
Coordinate()
{
}
// 打印坐标的函数
void printInfo()
{
cout << "(" <<m_iX << "," << m_iY << ")" << endl;
}
public:
int m_iX;
int m_iY;
};
int main(void)
{
//定义对象数组
Coordinate *coorArr = new Coordinate[2];
coorArr->m_iX = 20;
coorArr[0].m_iY = 100;
coorArr++;
coorArr->m_iX = 40;
coorArr[0].m_iY = 30;
//遍历数组,打印对象信息
for(int i = 0; i < 2; i++)
{
coorArr->printInfo();
coorArr--;
}
return 0;
}查看全部 -
#include <iostream>
using namespace std;
class Coordinate
{
public:
Coordinate()
{
}
// 打印坐标的函数
void printInfo()
{
cout << "(" <<m_iX << "," << m_iY << ")" << endl;
}
public:
int m_iX;
int m_iY;
};
int main(void)
{
//定义对象数组
Coordinate coorArr[2];
coorArr[0].m_iX = 20;
coorArr[0].m_iY = 100;
coorArr[1].m_iX = 40;
coorArr[1].m_iY = 30;
//遍历数组,打印对象信息
for(int i = 0; i < 2; i++)
{
coorArr[i].printInfo();
}
return 0;
}查看全部 -
常成员函数:
声明:<类型标志符>函数名(参数表)const;
如果一个成员函数对类中数据成员只作访问而不作直接或间接的修改,则最好将此函数设置为常成员函数,以明确表示它对数据成员的保护性。
必须是常对象才能调用常成员函数。
常成员函数与普通成员函数互为重载,常成员函数只能由常对象调用,普通成员函数由普通对象调用。
查看全部 -
!!!Array
return *this;
返回的是一个临时的新对象,之后对返回值的操作,不会影响到this原本指向的对象。
但是!
Array&
return *this;
引用符号&的引入可以改变原this指向的对象.
查看全部 -
如果对象A中有对象成员B,对象B没有默认构造函数,那么对象A必须在初始化列表中初始化对象B(原因:因为实例化A时,会先执行B的构造函数,再执行A的构造函数,如若对象B没有默认构造函数,即需要给B的构造函数传递参数才能调用,但是此时A的构造函数还没有执行,因此它还拿不到A构造函数的参数,所以先调用B的构造函数这个过程将无法进行。而初始化列表会先于构造函数的执行对对象成员进行初始化,因此不必再担心B的构造函数拿不到参数而无法执行的问题。因此如果B没有默认构造函数,那么对象A必须在初始化列表中初始化对象B.)
转自:https://blog.csdn.net/hudfang/article/details/50511481
查看全部 -
对象数组,this指针查看全部
-
一个对象可以有多个对象常引用
常成员函数只读权限<普通成员函数读写权限
- 普通对象能调用常成员函数,也能调用普通成员函数
- 常对象只能调用常成员函数
指向常对象的指针 = 常指针 = Coordinate const *pCoor;
指向对象的常指针 = 指针常量 = Coordinate *const pCoor;
查看全部
举报