20190708总复习3

C++:
共6个函数
1、构造函数 2、析构函数 3、拷贝构造函数 4、赋值语句 5、取地址操作符的重载函数6、const修饰的取地址操作符的重载函数
调用拷贝构造情况:
对象初始化对象
传参是对象
返回类型是对象,要初始化一个临时空间(对象),调用拷贝构造

析构顺序与构造顺序相反

return Test(value);节省空间

Test fun(Test &x)引用不会拷贝构造

观察是否能构成重载,即参数列表是否相同,加一个const即可构成重载

Test(const Test &t)//不能去掉 &,否则会出现无限的递归调用,默认的拷贝构造函数带有const
{
m_data = t.m_data;
cout << “Copy Create Test Object:” << this << endl;
}

free§ 释放空间
p = NULL 释放指针

赋值语句方法
必须是在此值不等时,才能赋值,最后返回 *this

void fun()相当于 void fun(Test *const this)

void fun()const 相当于void fun(const Test *const this)

Test &operator=(const Test &t)
{
if(this != &t)
m_data = t.m_data;
return *this;
}

ifndef define endif 作用是什么
防止头文件被重复引用

<>编译器从标准库路径开始搜索,编译器从用户工作路径开始搜索

const作用是:
可以定义常量
const可以修饰函数的参数、返回值,甚至函数的定义体,被const修饰的东西
都受到强制保护,可以预防意外的变动,能提高程序的强壮性
常方法
常引用

extern C:
C++语言支持函数重载,C语言不支持重载,函数被C++编译后在库中的名字与C语言的不同,假设某个函数的原型为:void foo(int x,int y);
该函数被C编译器编译后在库中的名字为_foo,而C++编译器则会产生像_foo_int_int之类的名字。
C++提供了C链接交换指定符号extern “C”来解决名字匹配问题。

在函数区域内,构造的对象在函数运行结束时,对象也会被随之销毁

开辟空间后要记得释放空间,并且释放指针(指针赋空)

为什么要加char *类型的返回值
为了实现链式表达式。

int length = strlen(strcpy(strDest,"hello world"));

赋值语句:

  • List item

1.检查自赋值
2.释放原有的内存资源
3.分配新的内存资源,并复制内容
4.返回本对象的引用

发布了39 篇原创文章 · 获赞 10 · 访问量 758

猜你喜欢

转载自blog.csdn.net/weixin_43393776/article/details/95086964
今日推荐