0
点赞
收藏
分享

微信扫一扫

c++命名空间、访问修饰符、函数重载、类、构造函数、析构函数,This关键字

前行的跋涉者 2022-04-24 阅读 30

命名空间

作用:防止变量或者函数等重名,引起访问不正确(fp重复定义错误
定义命名空间:

namespace xxx
{
//里面可以包含变量、函数、类、typrdef、#define等。
print();
}

访问方式:(与接续操作符,还可以使用using)
命名空间::函数名()

xxx::print()
全局:
::print();

c++输入输出:cin、cout
bool类型变量输出:cout<<a<<boolalpha<<endl;

- 引用类型:

#include<iostream>
using namespace std;
int main()
{
	int a=100;
	int &b=a;//引用类型,取地址符b即为a的地址,b等同于a
	cout<<&b<<" "<<&a<<endl;//两者输出地址相同
	b=10;
	cout<<a<<endl;
	return 0;
}

在这里插入图片描述

- 引用类型特点:
1.引用被创建必须初始化(对应指针则可以在任何时候被初始化)
2.不能有空引用,引用必须与合法的存储单元关联(指针则可以为空指针)
3.一旦引用被初始化,就不能改变引用的关系(指针则可以随时改变所指向的对象)

访问修饰符

在这里插入图片描述

函数重载

函数重载指的是,在同一个作用域下,可以具有同一个函数名,不同参数列表的函数。重载函数一般用来命名一组功能相似的函数,这样做减少了函数名的数量,避免了名字空间的污染,对程序可读性有很大好处。
特点:
1.相同作用域下,函数名相同参数列表不同(包括参数个数,参数类型)
2.只有返回值不同不算函数重载
※函数重载的规则:
函数名必须相同
参数列表必须不同(个数,类型,参数排列顺序等)
返回类型不做为判断是否重载的要素
仅仅返回值不同不足以为函数重

类:人类,动物类,植物类,学生类
对象:我,大黄,玫瑰花,学生

构造函数(太过复杂,具体会单独出一篇文章)

构造函数的名字和类名相同,没有返回值,可以重载(重载构造函数),不需要用户显示的调用,而是创建对象时自动执行。

构造函数的类型
默认构造函数(缺省构造函数),(初始化构造函数)(有参构造函数)一般构造函数(重载构造函数),复制构造函数(拷贝构造函数),转换构造函数

class human()
{
	human();//默认构造函数
	human(int num,int age);//初始化构造函数
	human(human&本类对象);//复制构造函数
	huamn(int s);//形参是其他类型变量,且只有一个

析构函数

创建对象时系统会自动调用构造函数进行初始化工作,同样,销毁对象时系统也会自动调用一个函数来进行清理工作,例如释放分配的内存、关闭打开的文件等,这个函数就是析构函数。
析构函数也是一种特殊的成员函数,没有返回值,不需要程序员显式调用(程序员也没法显式调用),而是在销毁对象时自动执行。构造函数的名字和类名相同,而析构函数的名字是在类名前面加一个
~ 符号。
注意:析构函数没有参数,不能被重载因此一个类只能有一个析构函数。如果用户没有定义,编译器会自动生成一个默认的析构函数。
析构函数在对象被销毁时调用,而对象的销毁时机与它所在的内存区域有关。
在所有函数之外创建的对象是全局对象,它和全局变量类似,位于内存分区中的全局数据区,程序在结束执行时会调用这些对象的析构函数。
在函数内部创建的对象是局部对象,它和局部变量类似,位于栈区,函数执行结束时会调用这些对象的析构函数。
new 创建的对象位于堆区,通过 delete 删除时才会调用析构函数;
如果没有 delete,析构函数就不会被执行。

this关键字

this是c++的一个关键字,也是一个const指针,它指向当前对象,通过它可以访问当前对象所有成员。

  1. this区分成员变量和局部变量
  2. this代表调用当前函数的对象的地址常量
  3. 静态成员函数与普通成员函数的根本区别在于:普通成员函数有 this 指针,可以访问类中的任意成员;而静态成员函数没有 this 指针,只能访问静态成员(包括静态成员变量和静态成员函数)。
举报

相关推荐

0 条评论