c++学习记录20201025
有空间不一定有对象,有对象一定要有空间
例:
class Empty
{
public:
Empty(const Empty &e) {}
};
int main()
{
Empty x;
Empty y(x);
}
Empty 对象没有成员,但是实例化对象x的大小为1个字节,这里的一个字节表示占位符
c++中构造函数可以带默认值
当成员是一个数组的时候,带参数的构造函数需要按位赋值
class Object
{
private:
int ar[5];
public:
Object(int x = 0)
{
for(int i = 0;i < 5;i++)
{
ar[i] = 0;
}
}
};
int main()
{
Object a(10);
Object b(a);
Object x;
}
char *p = new char arr[10]
delete []p
开辟连续空间的时候,也需要释放连续的空间
浅拷贝:
指针的浅拷贝是拷贝指针地址,若两个指针指向同一个地址,
1.其中一个指针释放了指向的空间,另一个指针再释放指针指向的空间时,系统将会崩溃(二次释放)
2.若在修改指针指向的地址之前没有释放指向的空间,则会造成内存泄露
深拷贝:
深拷贝是对数据本身进行操作的,如果只是单纯的对指针进行拷贝,那么就可能出现一些问题
小点:
strlen()函数的参数不能为空
指针的空间大小是4
能否使用引用的变量返回,要看该变量的生存期,如果生存期受函数的影响,则不能使用(会被销毁)