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

C++C++ this 指针用法 ② ( 常量成员函数 | const 修饰成员函数分析 )

一、常量成员函数 1、const 修饰成员函数分析 C++ , 普通非静态成员函数 , 可以使用 const 进行修饰 , 下面的 Student , 定义了 void fun(int...age, int height) 成员函数 , 下面使用 const 关键字修饰该类 ; 使用 const 修饰 成员函数 , 写法如下 , fun() 之后使用 const 关键字修饰 函数 :... * 右边修饰是指针本身 ; 代码示例 : class Student { public: // 使用 const 修饰 成员函数 // const 关键字可以 // void...; // 身高 如果 成员函数 被 const 关键字 声明为 常量成员函数 , 则在该函数 不能修改 对象 任何成员变量 ; class Student { public: void fun..." << endl; } // 使用 const 修饰 成员函数 // const 关键字可以 // void fun(int age, int height) 之后 , 大括号之前

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

使用C++cin函数来读取用户输入

一、cin函数概述 C++cin是一个头文件iostream标准输入流,它用于从键盘读取输入。...然后屏幕上输出提示信息“请输入一个整数:”,随后使用cin函数读取用户输入整数,将其存储变量num,最后将读取到整数输出到屏幕上。...cin >> str;    cout << "您输入是:" << str << endl;     return 0; } 与读取整数类型输入相似,我们可以使用cin函数读取用户输入字符串。...可以使用cin.ignore函数实现这个功能。注意,在读取完整数类型输入后,需要调用cin.ignore函数,将回车符从输入缓冲区清除。...四、总结 C++cin函数是一个非常强大功能,可以读取多种类型输入,提高了程序交互性。使用cin函数时,需要注意用户输入可能会出现错误,需要预留异常处理机制,保证程序稳定性。

63430

每日一问:c++成员函数,能作为线程参数

问:成员函数可以传入线程参数? 回答: 如果c语言全局函数可以。 如果是静态成员函数可以 如果是普通成员函数,不可以 为什么?...《深入探索C++对象模型》中提到成员函数时,当成员函数不是静态,虚函数,那么我们有以下结论: (1) &名::函数名 获取成员函数实际地址; (2) 对于函数x来讲obj.x()编译器转化后表现为...x(&obj),&obj作为this指针传入; (3) 无法通过强制类型转换成员函数指针与其外形几乎一样普通函数指针之间进行有效转换。...所以,要在回调函数传入一个普通成员函数时,this指针无处安放使得回调函数比较复杂。 怎么解决?...,但在函数体内执行成员函数

2.2K30

从零开始学C++之对象使用(一):static 成员变量、static 成员函数对象大小

如果我们用全局变量会破坏数据封装,一般用户代码都可以修改这个全局变量,这时可以静态成员来解决这个问题。...(1)、static成员定义 static成员需要在定义体外进行初始化与定义 (2)、特殊整型static const成员 整型static const成员可以定义体初始化,...:     const int a;   //只能在构造函数初始化列表初始化     static int b;    //实现文件定义并初始化     const static int c;...二、static 成员函数 static成员函数没有隐含this指针 非静态成员函数可以访问静态成员 静态成员函数可以访问非静态成员(实际上是直接访问是不可以,间接地访问是可以,比如通过指针或引用...虚函数大小影响(参考这里) 虚继承对大小影响(参考这里) 参考: C++ primer 第四版 Effective C++ 3rd C++编程规范

1.2K00

c语言random函数vc,C++ 随机函数random函数使用方法

大家好,又见面了,我是你们朋友全栈君。 C++ 随机函数random函数使用方法 一、random函数不是ANSI C标准,不能在gcc,vc等编译器下编译通过。...(但这样便于程序调试) 2、C++另一函数srand(),可以指定不同数(无符号整数变元)为种子。但是如果种子相同,伪随机数列也相同。一个办法是让用户输入种子,但是仍然不理想。...若要产生每次不同随机数,可以使用srand( seed )函数进行随机化,随着seed不同,就能够产生不同随机数。...如大家所说,还可以包含time.h头文件,然后使用srand(time(0))来使用当前时间使随机数发生器随机化,这样就可以保证每两次运行时可以得到不同随机数序列(只要两次运行间隔超过1秒)。...三、按要求设置概率 比如要设置一个10%概率问题,我们可以采取rand()函数来实现,if条件句判断里,用rand()得到值%一个设定值,再与另一个值做“==”运算。

3.8K20

《挑战30天C++入门极限》C++多态与虚函数使用

C++多态与虚函数使用   多态特性是支持面向对象语言最主要特性,有过非面向对象语言开发经历的人,通常对这一章节内容会觉得不习惯,因为很多人错误认为,支持封装语言就是支持面向对象...(); }   c++是允许派生重载基成员函数,对于重载来说,明确,不同类对象,调用其成员函数时候,系统是知道如何找到其同名成员,上面代码a.ShowMember(...但是实际工作,很可能会碰到对象所属不清情况,下面我们来看一下派生成员作为函数参数传递例子,代码如下: //例程2 #include using namespace...,派生,由于继承关系,这里virtual也可以不加 { cout<<speed<<"|"<<total<<"|"<<aird<<endl; }...,始终只调用了基析构函数,由此我们发现,多态特性virtual修饰,不单单对基和派生普通成员函数有必要,而且对于基和派生析构函数同样重要。

67810

iScience|不确定性量化问题:我们可以相信AI药物发现应用

图1 Softmax函数给出概率不能被可靠地视为是预测置信度 图1B显示是模型训练集和测试集上给出概率。可以看出,该模型训练部分拟合良好,但在测试部分给出了过于自信错误预测。...因此,预测不确定性总预测不确定性比例可以用来估计一个模型是否达到了可能MAA。... AL ,模型通常使用有限训练集(例如,当前可用样本)进行初始化。然后,根据预定义查询策略(也称为选择函数)迭代选择未标记样本批次,通过相关实验进行标记,并逐渐添加到训练集中。...虚拟筛选 高通量虚拟筛选(VS)已成为从大型化学文库识别hit化合物重要方法。 基于DLVS典型工作流程,来自文库药化合物由DL模型评分,其中选择得分最高化合物进行进一步实验验证。...提高模型准确性和稳健性 到目前为止,我们引入大多数策略都将UQ视为模型建立工作流程独立模块。一个重要原因是,我们希望模型准确性和可解释性之间做出权衡。

2.2K30

C++C++ this 指针用法 ③ ( 全局函数成员函数 相互转化 | 有参构造函数设置默认参数值 | 返回匿名对象与返回引用 )

一、全局函数成员函数 相互转化 1、成员函数转为全局函数 - 多了一个参数 C++ 编译器 , 在编译阶段会将 C++ 成员函数 转为 全局函数 , 转换时 , 会 增加一个参数到参数列表开始为止..., 这个增加参数是 对象本身指针 ; Student , 定义了如下函数 : // 成员函数 转为 全局函数 , 多了一个参数 Student* pThis 作为第一个参数 void..., 就是通过 this 指针隐藏左操作数 , 对象本身 就是 左操作数 , 成员函数 , 通过 this 指针访问对象本身成员 ; 全局函数 , 实现两个 Student 相加 , 接收两个...; 如下带参数构造函数 , 并且为其 有参构造函数 参数 设置一个默认值 , 此时就可以使用 名 对象名 方式定义对象变量 ; class Student { public: // 带参构造函数...height; // 身高 }; 此时就可以使用默认构造函数 , 创建 Student 对象 ; 三、返回匿名对象与返回引用 ---- 在上面的章节 , 将 两个 Student 对象相加 ,

16720

最全面的c++构造函数高级使用方法及禁忌

说明一下,我用是gcc7.1.0编译器,标准库源代码也是这个版本。 本篇文章讲解c++,构造函数高级用法以及特殊使用情况。 1....,我们执行一下程序,结果如下: call constructors throw something 可以看到没有执行析构函数,那如果构造函数申请动态内存以后抛出异常,就会出现内存泄露问题,那么为什么没有执行析构函数呢...,存在动态内存class里面使用移动构造就要小心了,一不小心就会出现问题哦,具体移动构造怎么实现可以参考上面第一点代码。...怎么防止对象被拷贝和赋值 防止对象被拷贝和赋值,换句话说,就是不能调用拷贝函数和赋值运算符重载函数我们首先能想到就是把这两个函数声明为private,或者私有继承一个基,而到了c++11...综上,不论是基还是继承,他们构造函数中都可以直接调用虚函数

1.5K30

《挑战30天C++入门极限》C++面向对象编程入门:(class)

,但c++可以,这一点就和c有了本质区别,很好体现了c++面向对象特点!   ...(); }   问题1:   利用域区分符我们可以定义外部设置成员函数,但要注意是,内部必须预先声明: void test::rp()   函数类型后面加上名称再加上域区分符...(::)再加函数名称,利用这样方法我们就在外部建立了一个名为rptest成员函数(方法),可能很多人要问,这么做有意义?...写程序时候只需要外部接口也就是头文件即可,这一特点和我们使用标准库函数道理是一致,因为定义,已经包含了成员函数(方法)声明。   ...使用我们经常会碰到以下三种情况:   1.成员函数局部变量隐藏了同名成员变量,看如对上面程序分析。

67110

C++与对象(下)

一.const成员 将const修饰成员函数”称之为const成员函数,const修饰成员函数,实际修饰该成员函数隐含this指针,表明成员函数不能对任何成员进行修改。...而且对于C++来说用const修饰this指针,普通对象和const对象都能调用;(若普通对象调用该函数会产生权限缩小现象产生,这种权限缩小是我们所允许) 而const修饰对象则不可以调用普通函数...静态成员函数和非静态成员函数调用关系 静态成员函数可以调用非静态成员函数?no(无this指针) 非静态成员函数可以调用静态成员函数?...友元 友元分为:友元函数和友元(有元会在继承讲) 友元函数可以直接访问私有成员,它是定义外部普通函数,不属于任何,但需要在内部声明,声明时需要加friend关键字。...、 说明: 友元函数可访问私有和保护成员,但不是成员函数 友元函数不能用const修饰 友元函数可以定义任何地方声明,不受访问限定符限制 一个函数可以是多个友元函数

9510

C++初阶-和对象下

静态成员普通成员一样,也有public、protected、private3种访问级别,也可以具有返回值 相关问题: 静态成员函数可以调用非静态成员函数?...不能,对于静态成员函数并不是某个对象具体实例,也就没有this指针,无法调用非静态成员函数 非静态成员函数可以调用静态成员函数?...1、友元函数 有关问题引入:关于重载输入输出操作函数 当重载输出函数时,如果将函数设为成员变量,我们发现cout\cin输出\输入流对象和隐含this指针抢占第一个参数位置。...但是实际使用cout\cin需要是第一个形参对象,才能正常使用。所以我们要operator<<重载成全局函数。..._day; return _cin; } 说明: 友元可以访问私有和保护成员,但不是成员函数 友元函数不能用const修饰(不是成员函数,没有this指针) 友元函数可以定义任何地方声明

34930

《挑战30天C++入门极限》C++面向对象编程入门:构造函数与析构函数

上一个教程我们简单说了关于一些基本内容,对于对象成员初始化我们始终是建立成员函数然后手工调用该函数成员进行赋值,那么c++对于来说有没有更方便方式能够在对象创建时候就自动初始化成员变量呢...关于c++成员初始化,有专门构造函数来进行自动操作而无需要手工调用,正式讲解之前先看看c++对构造函数一个基本定义。   ...c++规定如果一个对象是另外一数据成员,那么创建对象时候系统将自动调用那个构造函数。   下面我们看一个例子。   ...前面我们已经简单说了构造函数和析构函数我们知道一个成员可以是另外一个对象,构造函数允许带参数,那么我们可能会想到上面的程序我们可以把Studentteacher成员用带参数形式调用...对于上面的那个"尴尬"问题,我们可以构造函数后面加上:号并指定调用哪那个成员构造函数来解决!

63130

C++六大“天选之子“之“构造“与“析构“

(1) 自动生成"构造函数" 构造函数编译器会自动调用,那我们不写构造函数会怎样呢? 下面这段代码会报错?...Date我们没有写构造函数,但是编译器自动生成了一个隐藏构造函数并且对自定义类型(这里是Time)会调用自己构造函数,所以Time成员已经初始化了. (2) 自定义"构造函数" 前面提到,...内置类型,默认构造函数是不进行处理,而这显然是设计不合理,所以C++11,打了个补丁,内置类型成员变量声明时可以给默认值(缺省值),记住这里是默认值,并不是真的存储变量,因为声明是没有空间存储变量...(为了解决满足多样初始化要求) 默认构造函数是对内置类型不进行处理,C++11,打了个补丁,内置类型成员变量声明时可以给默认值(缺省值) 如果类没有显式定义构造函数,则C++编译器会自动生成一个无参默认构造函数...如果类没有申请资源时,析构函数可以不写,直接使用编译器生成默认析构函数,比如Date;有资源申请时,一定要写,否则会造成资源泄漏,比如Stack

12720

C++声明和成员函数定义 | 引用多个成员对象

C++声明和成员函数定义分离 C++,一般做法是将声明放在指定头文件,程序员如果想用该类,只要把有关头文件包含进来即可,不必程序重复书写声明,以减少工 作量,提高编程效率。 ...由于头文件包含了声明,因此程序中就 可以用该类来定义对象,由于包含了对成员函数声明,程序中就可以调用这些对象公用成员函数。...C++,如果一个声明多次被不同程序所选用,可以不必每次都对它重复进行编译,而只需编译一次即可,把第一次编译后所形成目标文件保存起来,以后需要时把它调出来直接与程序目标文件相连接即可。...C++库有两种:  C++编译系统提供标准库 自定义库,用户根据自己需要做成用户库, 提供给自己和自己授权的人使用。...C++库包括两个组成部分: 声明头文件 已经过编译成员函数定义,它是目标文件。 案例:C++引用多个对象成员

1.8K83
领券