操作重载
来源:互联网 发布:js 控件赋值 编辑:程序博客网 时间:2024/06/11 06:30
基本概念
重载的运算符是具有特殊名字的函数:operator和其后要定义的运算符号组成。
重载的运算符也包含返回类型、参数列表、函数体。
模板
函数模板:以关键字template开始,后跟一个模板参数列表,这是一个逗号分隔的一个或者多个模板参数列表,以<>
包起来。
template<typename T>T的实际类型在编译时候根据compare使用情况确定int compare(const T &1,const T &v2){ if(v1< v2) return -1; if(v2<v1) return 1; return 0;}
模板的实例
compare(1,0),编译器为我们推断出模板参数为int,并将其绑定到目标参数T。T被替换为int
在模板参数列表中,class与typename关键字含有相同,可以互换。
//错误,U必须加上class或者typenametemplate<typename T,U> T calc(const T&,const U&);
非类型模板参数
除了定义类型参数,还可以定义非类型参数。一个非类型参数表示一个值而非一个类型。
引用返回左值
调用一个返回引用的函数得到左值,其他类型得到右值。
返回引用返回的是对象本身,可以作左值。
class A{public: int x; A& get(){ return *this; } //此时应该是A的副本 A get1(){ return *this; }}int main(){ A a; a.x=4; a.get().x=100; cout<<a.x<<endl; //100}
类的静态成员
虽然静态成员不属于类的某个对象,但可以使用类的对象、指针或者引用来访问静态成员。
定义静态
可以在类内部或者外部定义静态成员函数。当在外部定义静态时成员时,不能重复static关键字。static只出现在类内部声明语句。
必须在类的外部定义和初始化每个静态成员。一个静态成员只能定义一次。
注意点
1.即使常量静态数据成员在类内部被初始化,也应该在类的外部定义一下该成员
class Account{public: static double rate(){return interestRate;} static void rate(double);private: static constexpr int period=30; double daily_tbl[period];};//类外部定义一下constexpr int Account::period;
阅读全文
0 0
- 操作重载
- 操作重载
- c++重载操作符
- C++ 操作符重载
- 操作符重载浅析
- 操作符重载
- 10.8 操作符重载
- 操作符重载
- 操作符重载手册
- C#操作符重载
- 操作符重载手册
- 操作符重载手册
- 六操作符重载
- 操作符的重载
- C#操作符重载
- 多态,操作符重载
- 操作符重载集锦
- 重载操作符
- 作业1
- 【C++ 异常】error: jump to case label, crosses initialization
- SpringCloud(第 023 篇)简单文件上传微服务采取curl或者页面点击实现文件上传
- Spring 学习(四) AOP
- 第三周第二节(第二章——线性表2)
- 操作重载
- Java设计模式_(结构型)_代理模式
- es6 string 连接
- OpenSSH服务——基于密钥的ssh认证实现
- opencv图像处理总结
- Linux文件特殊权限
- Git速查手册
- 如何在windows系统Python上安装xgboost ?
- 使用友盟多渠道打包