C++学习笔记——面向对象高级开发

C++学习笔记——面向对象高级开发

文章目录

  • C++学习笔记——面向对象高级开发
    • P2 转换函数 conversion function
    • P3 non-explicit-one-argument constructor
    • P4 pointer-like classes,行为像指针的类
    • P5 function-like classes,行为像函数,仿函数
    • P6 namespace经验谈
    • P7 class template,类模板
    • P8 function template,函数模板
    • P9 member template,成员模板
    • P10 specialization,特化
    • P11 partial specialization模板偏特化
    • P12 template template parameter,模板模板参数
    • P13 关于C++标准库
    • P14 三个主题
    • P15 引用
    • P16 复合&继承关系下的构造和析构
    • P17关于vptr和vtbl,虚指针、虚表
    • P18 关于this
    • P19 对象模型:关于动态绑定
    • P20 关于 new,delete
    • P21 重载new,delete
    • P22 示例
    • P23重载new(),delete()示例
    • P24 basic_string试用new(extra)扩充申请量

P2 转换函数 conversion function

class Fraction{
   
public:
	// 转换函数,不需要写返回值类型,编译器自动补充;不一定是基本类型
	operator double() const{
    
		return (double)(m_numerator/m_denominator);
	}
private:
	int m_numerator;//分子
	int  m_denominator;//分母
};

Fraction f(3,5);
double d = 4+f; // 调用operator double()将f转为double

P3 non-explicit-one-argument constructor

class Fraction{
   
public:
	Fraction(int num,int den=1):m_numerator(num),m_denomiator(den){
   }//1
	operator double() const;//2
	explicit Fraction(int num,int den=1):m_numerator(num),m_denomiator(den){
   }//3;explicit避免隐式调用
	Fraction operator+(const Fraction& f){
   
		return ...;
	

你可能感兴趣的:(C++学习笔记——面向对象高级开发)