-
【浅拷贝】是增加了一个指针,指向原来已经存在的内存。而【深拷贝】是增加了一个指针,并新开辟了一块空间,让指针指向这块新开辟的空间。
【浅拷贝】在多个对象指向一块空间的时候,释放一个空间会导致其他对象所使用的空间也被释放了,再次释放便会出现错误
查看全部 -
this指向的就是它所在对象的地址查看全部
-
ctl+K+c注释代码
查看全部 -
在调用拷贝构造时,报错为“error: passing ‘const Element<int>’ as ‘this’ argument of ‘const std::vector<T, std::allocator<_Tp1> >& Element<T>::getDim() [with T = int]’ discards qualifiers”
2. 解决方案
因为this指针是不可改变的,为了确保其不变性,将getDim函数也定义为const的,即“int getDim() const { return this->dim; }”
---------------------
作者:lxf310
来源:CSDN
原文:https://blog.csdn.net/lxf310/article/details/9289163
版权声明:本文为博主原创文章,转载请附上博文链接!查看全部 -
// 创建常指针p
const Coordinate *p = &coor;
// 创建常引用c
const Coordinate &c = coor;查看全部 -
非常对象可以调用常成员函数
常对象不能调用非常成员函数
使用初始化列表初始化常成员
查看全部 -
类的实例化对象声明为普通对象时,既能调用类的普通成员函数也能调用类的常成员函数,当一个成员函数具有普通和const两个重载版本时,此时普通对象调用的是其普通版本。
类的实例化对象声明为常对象时,只能调用类的常成员函数。
查看全部 -
1.常成员函数中const是用来修饰this指针的。
查看全部 -
#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(3,5);
// 打印坐标
cout << (*p).m_iX << (*p).m_iY << endl;
// 销毁对象指针
delete p;
p = NULL;
return 0;
}查看全部 -
1.类的声明和定义最好分别放在该类的(.h)和(.cpp)文件中。
查看全部 -
const修饰的成员变量必须用初始化列表来进行初始化
const 能修饰成员函数,称为常成员函数,必须是常对象才能调用常成员函数。
常成员函数与普通成员函数互为重载,常成员函数只能由常对象调用,普通成员函数由普通对象调用
查看全部 -
使用对象成员指针能节约栈中的位置,将成员变量的值储存在堆中
查看全部 -
拷贝的时候参数表里头要加&是为了防止无限递归,具体是啥好像是构造函数重复调用,emmmmm,创建这个类的时候又会调用一次。加上&地址相同,不会再次引用。对。
查看全部 -
#include"iostream" using namespace std; int main() { class Coordinate { public: int m_ix; int m_iy; }coord[3] = { 3,5,2,6,3,7 }; Coordinate *p = new Coordinate[3]; //p0 p[0].m_ix = 20; p->m_iy = 20; p++; //p1 p->m_ix = 6; p[0].m_iy = 7; //p2 p[1].m_iy = 9; p++; p->m_ix = 8; //遍历输出 for (int i = 0; i < 3; i++) { cout << "coord_x :" << "\t" << coord[i].m_ix << endl; cout << "coord_y :" << "\t" << coord[i].m_iy << endl; } for (int i = 0; i < 3; i++) { cout << "p_x:" << "\t" << p->m_ix << endl; cout << "p_y:" << "\t" << p->m_iy << endl; p--; } delete[]p; p = NULL; return 0; }
查看全部 -
浅拷贝:
将对象内容简单拷贝,指针成员指向同一地址
深拷贝:
在堆中开辟一块新的地址,将原地址中的内容拷贝进去
查看全部
举报