首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

C++ this指针:用于在成员函数中指向调用该函数的对象

在成员函数中,可以使用this指针来访问调用该函数的对象的成员变量和成员函数。 一、定义和使用this指针 this指针是在成员函数内部定义的一个常量指针。...它存储了当前对象的地址,可以通过它访问当前对象的成员变量和成员函数。在成员函数内,无需显式地传入this指针,编译器会自动将当前对象的地址赋给this指针。...这里this->name等价于成员变量name。在getName函数内部,this指针被用来访问成员函数getName()。这里this->getName()等价于调用成员函数getName()。...这里使用了*this来访问调用该函数的对象。 三、作为函数参数的this指针 this指针也可以作为函数参数传递。这种情况下,可以在函数内部访问其他对象的成员变量和成员函数。...在getName函数内部,使用了this指针访问调用该函数的对象的成员变量name。

26040
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    C++核心准则T.69:在模板内部,不要进行不受限制的非成员函数调用

    make an unqualified non-member function call unless you intend it to be a customization point T.69:在模板内部...,不要进行不受限制的非成员函数调用,除非你希望它成为一个定制点 Reason(原因) Provide only intended flexibility....如果你想用依赖模板类型参数的值t调用你自己的帮助函数helper(t),将它放入::detail命名空间并用detail::helper(t)对调用进行限定;如果一个帮助函数处于t的类型可以被触发的命名空间...,不受限的调用会成为一个定制点;这会引起意外调用非约束函数模板等问题。...在模板同一个命名空间中,如果存在一个同名非成员函数,标记模板中针对传递受影响类型变量的非成员函数的不受限调用。

    1.1K10

    基于 Redis 在 Laravel 中实现消息队列及底层源码探究

    在 PHP 中,可以使用原生的数组函数或者 SplQueue 类很轻松地实现队列这种数据结构,不过这里我们介绍的是 Redis,所以还可以借助 Redis 自带的列表类型来实现。...要在 Laravel 项目中使用 Redis 实现队列系统,只需在配置好 Redis 连接信息后将环境配置文件 .env 中的 QUEUE_CONNECTION 配置值调整为 redis 即可: QUEUE_CONNECTION..., 'block_for' => null, ], 队列系统服务提供者 在 Laravel 应用启动时,会通过 QueueServiceProvider 来注册队列系统相关服务到服务容器: public...RedisJob 上定义的 fire 方法执行对应的任务逻辑(更底层调用的是 Redis 封装任务类上的处理方法): public function process($connectionName,...handle 或者 __invoke 方法执行,这里也就是我们在 PostViewsIncrement 上定义的 handle 方法: public function dispatchNow($command

    6.4K30

    【Laravel系列4.1】连接数据库与原生查询

    在这个 mysql 的配置中,我们会发现很多 env() 函数调用的信息。这个函数是用于读取 .env 文件中所写的配置信息的。...关于这个函数,还记得我们在之前就已经讲过了。...这种操作其实就像是 Laravel 为我们封装好了 PDO 的调用,也就是像我们在很早前自己封装的那种数据库调用类一样,非常简单方便。...不过在这里为了突显出我们是调用了这个门面类,所以才写了这个完全限定名字称的类名。 看这个 insert() 函数的参数写法,是不是和 PDO 的预处理语句的写法很像?...它的作用就是找到指定的连接,在默认情况下,Laravel 框架会去找 mysql 这个配置,如果我们需要操作其它数据库的话,就需要通过 connection() 来指定要连接的数据库。

    3.2K50

    Laravel源码解析之Database

    在我们学习和使用一个开发框架时,无论使用什么框架,如何连接数据库、对数据库进行增删改查都是学习的重点,在Laravel中我们可以通过两种方式与数据库进行交互: DB, DB是与PHP底层的 PDO直接进行交互的...上面说的这两个部分都包括在了 Illuminate/Database包里面,除了作为Laravel的数据库层 Illuminate/Database还是一个PHP数据库工具集, 在任何项目里你都可以通过...explode('::', $name, 2) : [$name, null]; } public function getDefaultConnection() { // laravel默认是...如果设置了读写分离,那么就会调用 createReadWriteConnection 函数,生成具有读、写两个功能的 connection;否则的话,就会调用 createSingleConnection...函数,生成普通的连接对象。

    1.3K30

    Laravel 5.3之 Query Builder 源码解析(中)

    Connection::select()执行的,之前的Laravel版本是没有封装在闭包里而是先执行了连接操作,Laravel5.3是封装在了闭包里等着执行SQL语句再连接操作,应该是为了提高效率。...createConnection($dsn, $config, $options),该方法实例化了一个PDO,这里就明白了Query Builder也只是在PDO基础上封装的一层API集合,Query...并且,在$bindings[]属性中把where过滤器与值相互绑定存储,如果有多个where过滤器,就类似这样绑定,['where' => [1, 'laravel', ...], ...]。...Connection::select()执行的,之前的Laravel版本是没有封装在闭包里而是先执行了连接操作,Laravel5.3是封装在了闭包里等着执行SQL语句再连接操作,应该是为了提高效率。...createConnection($dsn, $config, $options),该方法实例化了一个PDO,这里就明白了Query Builder也只是在PDO基础上封装的一层API集合,Query

    3.5K31

    基于全局中间件 + Redis 实现 Laravel 全站访问计数器功能

    就可以在 Laravel 项目中与 Redis 服务器进行交互了,我们可以通过 Laravel 提供的 Redis 门面获取 Redis 客户端连接: Route::get('/connection...', function () { dd(\Illuminate\Support\Facades\Redis::connection()); }); 当然,门面本质上是对服务容器中 Redis...: dd(app('redis')->connection()); // 或者 dd(app('redis.connection')); 在浏览器中访问 http://redis-demo.test...全局访问计数器是一个自增的计数操作,每次自增步长是 1,所以调用 incr 方法即可,如果首次调用键值不存在,则先将其初始化为 0,再进行 +1 操作。...,其默认值是 laravel_database_,所以在 Redis 底层,需要通过 laravel_database_site_total_visits 才能获取到对应计数器的值: 如果你初来乍到,不知道前缀是什么

    2.3K20

    orm 系列 之 Eloquent演化历程2

    , (array) $sql); } } } 对于每个命令,我们都调用grammar的compileCommand函数,此处我们调用的是compileCreate函数,至此我们就分析完了数据库表操作的方法...中一大亮点Artisan,Artisan是 Laravel 自带的命令行接口名称,此处不做具体的介绍了,有机会再细说的,当我们在命令行中执行php artisan command的时候,会去调用migrateCommand...,然后最后会调用Migrator中的函数runMigrations函数,看下面分析: public function runMigrations(OuputInterface $output, $package...本文最后讲下Eloquent中新增的对象之间的关系:多态关系,以下内容摘自[ Laravel 5.3 文档 ] Eloquent ORM —— 关联关系 表结构 多态关联允许一个模型在单个关联下属于多个不同模型...让我们跟着git继续追踪吧_ 新纪元 为了解决PHP组件管理及散步的问题,2009年的php|tek大会上成立了PHP-FIG组织,目的在于透过三个方式来制定PHP社群在开发组件时的规范,laravel

    2.4K30

    【Laravel系列4.5】主从库配置和语法生成

    找到 laravel/framework/src/Illuminate/Database/Connection.php 中的 select() 方法,可以看到它还有第三个参数。...在 createPdoResolver() 方法中,我们看到了上面发现的那个生成回调函数的 createPdoResolverWithHosts() 方法的使用。这一下大家应该就真相大白了吧。...在 Builder 中,get() 方法会调用一个 runSelect() 方法,这个方法里面会再调用一个 toSql() 方法,就是获得原始查询语句的方法。...这一个循环是在干嘛?其实,从代码中我们可以看,它在遍历一个本地属性 selectComponents ,并根据这个属性里面的内容去调用自身的这些方法。...总结 今天的内容其实相对来说轻松一些,毕竟关于 Laravel 数据库方面的内容重点在于之前学习过的 模型 和 查询构造器 上。

    4.3K20

    【Laravel系列4.2】查询构造器

    查询语句相对来说会复杂一些,我们在测试代码中增加了 where() 、orderBy() 和分页相关的组织函数。最后,通过一个 get() 函数就可以获得列表的信息。...在 查询构造器 中,还有其它很多的链式函数可以实现非常复杂的数据库操作,大家可以自己去研究一下。...首先就是 DB 门面会生成一个 laravel/framework/src/Illuminate/Database/DatabaseManager.php 对象,在它的内部,如果我们没有指定 connection...// laravel/framework/src/Illuminate/Database/Connection.php public function table($table, $as = null)...总结 关于 查询构造器 的其它使用在官方文档上都有,今天的文章就只是简单地介绍了一些常用的和独特的查询构造方式而已,毕竟我们的系列文章的主旨还是在分析源码上。

    16.8K10

    【Laravel系列4.7】连接redis以及缓存应用

    在配置中有一个 default 和一个 cache 的配置,这个 cache 配置实际上是如果我们将 Laravel 默认的缓存目标设置为 Redis 的话,就会走这个配置,它会默认使用 Redis 的...在这个文件中就有 connection() 方法,下一步会调用到一个 connector() 方法。...缓存配置及应用 我们在 Laravel 中,可以像上面那样去使用 redis 来充当缓存,不过大家的选择可不能只限于 redis 呀,在很多情况下,我们可能会用别的缓存工具,比如说 Memcached...' => null, 'lock_connection' => null, ], 'file' => [ 'driver...但是呢,由于缓存数据库都相对来说会比关系型数据库简单一些,因此这些组件在 Laravel 中的呈现反而相对来说会简单一些。

    1.1K30

    Laravel 数据库连接配置和读写分离

    今天开始讲如何在 Laravel 中操作数据库,Laravel 为我们提供了多种工具实现对数据库的增删改查,在我们使用 Laravel 提供的这些数据库工具之前,首先要连接到数据库。...', 'mysql'), 当然,默认数据库连接、数据库名称以及数据库用户名和密码等敏感信息都保存到 .env 文件中了,然后通过 env 辅助函数读取: DB_CONNECTION=mysql DB_HOST..., ], 然后在 .env 中新增对应配置项: DB_CONNECTION_OLD=mysql DB_HOST_OLD=mysql DB_PORT_OLD=3306 DB_DATABASE_OLD=laravel56...connection 属性: protected $connection = 'mysql_old'; 这样,在模型类上执行查询、插入等操作时都会使用这个 mysql_old 数据库连接。...->get(); DB::connection('write')->table('users')->insert(...); 如果通过 Eloquent 模型类调用的话,还可以这么指定: User::

    5.5K20
    领券