C++(第二课) 学习笔记

构造函数

当在创建一个类的对象时,会自动调用构造函数。构造函数可以重载。

但参数的构造函数可以当作转换函数来使用,代码如下

class A

{

private:

int a;

public:

A(int n):a(n){}

}


int main()

{

A a = 10; // 调用单参数的构造函数

return 0;

}


赋值构造函数

函数原型是: className(const className &c);

如果类的成员含有指针变量,则应该重载该函数。如果不重载,在使用一个对象创建另一个对象时就只会拷贝指针的值, 而不会拷贝指针所指向的内容。这样会导致内存被重复释放。


赋值运算符函数

函数原型是: className& operator=(const className &c);

该函数同样是在有成员指针变量的情况下需要重载。如果不重载,在使用一个对象给另一个对象赋值时,会导致内存的泄漏,并且也会导致内存的重复释放。

在重载该函数时,还有一个需要注意的地方是,需要判断传入的对象是否自身,如果不判断的话,在传入自身时会丢失数据。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 前言 把《C++ Primer》[https://book.douban.com/subject/25708312...
    尤汐Yogy阅读 9,533评论 1 51
  • 题目类型 a.C++与C差异(1-18) 1.C和C++中struct有什么区别? C没有Protection行为...
    阿面a阅读 7,707评论 0 10
  • 第一天 一.内联函数(inline) 函数调用的时候需要建立栈内存环境,进行参数传递,并产生程序执行转移,这些工作...
    陈果123阅读 1,144评论 0 1
  • 亲爱的女孩,愿你笑容温暖,融化寒风冰霜;愿你心怀梦想,执着走向远方。 ...
    苏诺_杜若阅读 482评论 0 1
  • 昨天有点兴奋,早上我和女儿都没有早起,爸爸也没有叫我们,说是女儿昨天表现好,今天奖励我们自然醒。正当我沉浸在...
    崔嘉诺阅读 157评论 0 0