隐式转换构造函数、仿函数、转换函数实例

class B {
public:
    //隐式转换
    B(int i)
    {
        cout << i << endl;
        data = i;
    }
    //仿函数
    bool operator() (int i)
    {
        cout << i << endl;
        return i > 0;
    }
    //转换函数
    operator string()
    {
        return "class_string";
    }
private:
    int data;
};

int main() {
    B inst = 100;
    bool temp = inst(-100);
    if (temp) {
        cout << "hello operator" << endl;
    }

    string str = inst;
    cout << str << endl;

    getchar();
    return 0;
}
时间: 2025-01-13 04:10:05

隐式转换构造函数、仿函数、转换函数实例的相关文章

C++类转换构造函数和转换函数复习

//C++类转换构造函数和转换函数复习 #include<iostream> #include<string> using namespace std; class Student { private: string name; int age; double grade; public: Student(string name_, int age_, double grade_):name(name_), age(age_), grade(grade_){} Student(){

C++语言基础(22)-转换构造函数和类型转换函数

一.转换构造函数 将其它类型转换为当前类类型需要借助转换构造函数(Conversion constructor).转换构造函数也是一种构造函数,它遵循构造函数的一般规则.转换构造函数只有一个参数. #include <iostream> using namespace std; //复数类 class Complex{ public: Complex(): m_real(0.0), m_imag(0.0){ } Complex(double real, double imag): m_real

从头认识java-13.9 隐式和显示的创建类型实例

对于上一章节擦除引起的问题与解决的方法有读者提出过于简单.这里解释一下:由于笔者本身也遇不到对应的问题.仅仅是凭空想像一些有可能的问题,基于水平有限,因此上一章节写的比較简单,欢迎广大读者踊跃提意见,我会尽量改进. 回归到这一章节,这里我们将讨论隐式和显示的创建类型实例. 1.隐式建类型实例 我们上一章节提到以下有问题的代码: package com.ray.ch11; public class Test<T> { public void test(Object object){ // Sys

c++转换构造函数和类型转换函数

看stl源码时,有一段代码感觉很奇怪 iterator begin() { return (link_type)((*node).next); } iterator和link_type是两种不同类型,怎么能这么返回呢?翻了一下以前的笔记,发现是由转换构造函数生成临时对象再return. 转换构造函数的作用是将某种类型的数据转换为类的对象,当一个构造函数只有一个参数,而且该参数又不是本类的const引用时,这种构造函数称为转换构造函数.试验了一下 class A { public: int a;

effective c++条款13-17 “以对象管理资源”之C++隐式转换和转换构造函数

其实我们已经在C/C++中见到过多次标准类型数据间的转换方式了,这种形式用于在程序中将一种指定的数据转换成另一指定的类型,也即是强制转换,比如:int a = int(1.23),其作用是将1.23转换为整形1.然而对于用户自定义的类类型,编译系统并不知道如何进行转换,所以需要定义专门的函数来告诉编译系统改如何转换,这就是转换构造函数和类型转换函数! 注意:转换构造函数.隐式转换和函数对象不要搞混淆!!!函数对象是重载运算符(),和隐式转换函数易混淆. 一.转换构造函数 转换构造函数(conve

【C++自我精讲】基础系列五 隐式转换和显示转换

0 前言 1)C++的类型转换分为两种,一种为隐式转换,另一种为显式转换. 2)C++中应该尽量不要使用转换,尽量使用显式转换来代替隐式转换. 1 隐式转换 定义:隐式转换是系统跟据程序的需要而自动转换的. 1)C++类型(char,int,float,long,double等)的隐式转换: 算术表达式隐式转换顺序为: 1.char - int - long - double 2.float - double //1)算术表达式 int m = 10; double n = m;//n = 10

深入理解Scala中的隐式转换系统

博客核心内容: 1.Scala中的两种隐式转换机制以及隐式视图的定义方式 2.Scala中的隐式绑定可能所处的位置以及如何更好的使用隐式转换 3.Scala中的隐式转换相关操作规则 4.Scala中的隐式参数 5.Scala中的隐式类 6.Scala中的隐式对象 7.Scala中的两种隐式类型约束(结合Scala中的类型系统) 8.Predef类中的implicitly方法的用法介绍以及Ordering类型转化为Oredered类型的方式 1.Scala中的两种隐式转换机制以及隐式视图的定义方式

Scala入门到精通——第十九节 隐式转换与隐式参数(二)

作者:摇摆少年梦 配套视频地址:http://www.xuetuwuyou.com/course/12 本节主要内容 隐式参数中的隐式转换 函数中隐式参数使用概要 隐式转换问题梳理 1. 隐式参数中的隐式转换 前一讲中,我们提到函数中如果存在隐式参数,在使用该函数的时候如果不给定对应的参数,则编译器会自动帮我们搜索相应的隐式值,并将该隐式值作为函数的参数,这里面其实没有涉及到隐式转换,本节将演示如何利用隐式参数进行隐式转换,下面的代码给定的是一个普通的比较函数: object ImplicitP

Scala入门到精通——第十八节 隐式转换与隐式参数(一)

本节主要内容 隐式转换简介 隐式转换函数 隐式转换规则 隐式参数 1. 隐式转换简介 在scala语言当中,隐式转换是一项强大的程序语言功能,它不仅能够简化程序设计,也能够使程序具有很强的灵活性.要想更进一步地掌握scala语言,了解其隐式转换的作用与原理是很有必要的,否则很难得以应手地处理日常开发中的问题. 在scala语言中,隐式转换是无处不在的,只不过scala语言为我们隐藏了相应的细节,例如scala中的类继承层次结构中: 它们存在固有的隐式转换,不需要人工进行干预,例如Float在必要

面向对象进阶--转换构造函数,重载,类型转换函数

转换构造函数 1.将其他类型转换为当前类类型需要借助转换构造函数. 具体看例子:点击 类型转换函数 1.将当前类类型转换为其他类型,只能出现在类中. 2.语法格式: operator type(){ //TODO: return data; } operator 是 C++ 关键字,type 是要转换的目标类型,data 是要返回的 type 类型的数据. 具体点击 再谈转换构造函数和类型转换函数(例子) 具体点击 类型转换的本质 具体点击 四种类型转换运算符 static_cast     d