C++部分知识总结

endl  操纵符的作用:将内存中缓存的数据刷新到设备中,调式信息时,最好都要 使用  endl 作为调试结束符。
“引用”:将左值和右值绑定在一起,即左值是右值的别名,引用必须初始化。引用没有赋值这一说法。引用只能作用在对象上。不能作用在 字面值 或是表达式的结果上。
指针:在c++中 最好 是用 nullptr 表示空指针。指针也是一个对象,所以指针也可以引用

转换函数

转换函数即在定义了一个类型的对象,使用对象赋值到其他类型时,编译器会调用转换函数将其转换为相应的类型 转换函数没有返回值,返回值类型很具 type决定  operator type() {};

non-explicit one argument

当以一个类的构造函数为 不加 explicit 修饰,且只要一个实参就可以调用该构造函数时(这种构造函数可以有两个或是两个以上参数,但是只有一个不为默认参数也符合),编译器可能隐士的将其他类型的对象转换为 该类的对象

explicit (明白的)

使用在类的构造函数中,告诉编译器不能隐式的调用该构造函数,从而将其其他类型的对象转换为该类对象。

操作符 * 重载

 “ * ”可以作为乘法运算符,也可以作为 指针取值运算符,他们的区别在于,乘法运算符重载会有一个参数(成员函数运算符重载)或是 两个参数(非成员函数运算符重载),指针运算符重载时,不用写参数(成员函数运算符重载),只有一个参数(非成员函数运算符重载)

操作符 -> 重载

当操作符 “->” 重载后,返回的数值是 指针,则会继续 存在 “->” 该操作符,如果不是指针,则该操作符会结束。

操作符 () 重载

注意:类的后面加一个小括号表示产生临时对象, class A; A a 定义一个对象; A() 产生一个临时对象;
在C++中,有将类设计为函数的方式,成为仿函数,即在类中重载括号

类可以设置为像指针和像函数的示例

操作符 ::

:: 称为域操作符
有三种表示:
	1.全局作用域符,::name
	2.类作用域符, class A; A::name;
	3.命名空间作用域符, namespace::name
注意:命名空间作用域可以和类作用域一起使用。例如 namespace::class::name;

class template and function template and member template

在类模板中会出现 template <class T>  和 template <typename T>两种类型的声称,

其中 class 有可以来定义类 class A,而 typename 可以用来告诉编译器 typename A::type 中 类A 的 type 是类型,而不是class成员。

在函数模板中,只要在函数的前面声明 template <class / typename T>,则该函数则是函数模板,类模板在使用的时候会在类的后面使用<typename> 告诉编译器类型是什么,但是函数模板则不需要,因为编译器会根据实参进行推导。

成员模板是作用在类中,为了能够支持另一种类型转换为成员模板中的类型。虽然模板类编译通过,但是实际使用根据使用者使用才能确定是不是正确

模板特化

泛化:即模板类,使用的时候在指定类型。
特化:模板类中,指定类类型的模板。
偏特化:在版本类中,需要为模板缩小个数指定,或是范围的指定。
例如:
	个数的偏特化
	template <typename T1, typename T2>
	class A <bool, T2>
	{
	};

	范围的偏特化
	template <typename T>
	class B<T*>
	{
	};
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值