首页 > 其他分享 >类内构造函数前缀explicit

类内构造函数前缀explicit

时间:2023-06-04 21:35:21浏览次数:33  
标签:return int explicit 类内 MyClass data 构造函数

只有一个参数的构造函数前面加上explicit,这样一来在创建对象时不会被转换类型,因调用构造函数时有explicit限制,如

class MyClass {
public:
    explicit MyClass(int value) : data(value) {
    }

    int getData() const {
        return data;
    }

private:
    int data;
};

int main() {
    MyClass obj1(5); // 直接调用构造函数进行对象创建
    MyClass obj2 = 10; // 错误,禁止隐式类型转换
    MyClass obj3 = static_cast<MyClass>(10); // 正确,显式类型转换

    return 0;
}

 

标签:return,int,explicit,类内,MyClass,data,构造函数
From: https://www.cnblogs.com/toriyung/p/17456381.html

相关文章

  • c++ explicit关键字
    explicit关键字用于修饰单参数构造函数(因为无参数构造函数和多参数构造函数总是显式调用,这种情况在构造函数前面加explicit毫无意义)和转换函数,用于禁止隐式类型转换作用是防止编译器在某些情况下自动执行隐式类型转换,以提高代码的明确性和安全性classA{public:A(int......
  • 3. 构造函数
    我们继续下去,刚刚谈到设计一个class,这一页刚刚出现的有这么一页,就是class呢,首先要有这样的一个声明,你叫它定义也可以啊,这个不是那么的绝对。然后我就又用了另外一页告诉各位说,其实可以把里面的实部虚部抽出来,这就是一个模板的概念,但这只是先给大家带一下概念,后面我仍然不会去讲......
  • C++逆向分析——构造函数和析构函数
    构造函数与析构函数构造函数structStudent{inta;intb;Student(){printf("Look.");}voidInit(inta,intb){this->a=a;this->b=b;}};如上代码中,我们发现了存在一个函数,这个函数没有返回类型并且与结构体名称一样,那这段函数在什么时候执......
  • 通过定义私有构造函数限制类的实例化
    当在一个类中定义了私有构造函数时,它将限制其他代码在类外部直接实例化该类的对象。这意味着除了类内部的代码,其他代码无法通过调用类的构造函数来创建类的实例。通过定义私有构造函数,可以实现以下几个方面的控制:防止类被意外地实例化:私有构造函数可以确保类的实例化只能在类......
  • uobject只有可以声明无参构造函数和不写构造函数
    (一)结论:(二)测试过程:第一种:不声明任何构造函数:第二种:声明默认构造函数:第三种:声明其他构造函数:(直接报错,需要声明默认构造)(三)ue实现原理:UHT里可以解析出你是否定义了构造函数,是哪种构造函数:参数是否匹配“FObjectInitializer”:不同构造函数,对应使用不同的宏定义: 链接:ht......
  • 编译器绕过拷贝构造函数和返回值优化
    写在前面:在拷贝初始化(也就是用等号初始化,注意使用拷贝构造函数创建一个新的对象不属于拷贝初始化)过程中,编译器可以(但不是必须)跳过拷贝构造函数或者移动构造函数,直接创建对象。1stringnull_book="999";2//可以改写为3stringnull_book("999");这里面”999“隐式的转换为......
  • 结构体就算不用构造函数也可以初始化
    标题结构体就算不用构造函数也可以初始化#include<iostream>#include<vector>#include<algorithm>#include<string>#include<queue>#include<set>usingnamespacestd;structstateAndLevel{ stringstr; intlevel;};queue<stateAndLevel>......
  • 委托构造函数
    一.当构造受委托的构造函数时,受委托的构造函数函数体会执行而委托构造函数函数体不会执行;classPerson{public:Person(){cout<<"这是一个无参构造"<<endl;}Person(constPerson&p){cout<<"这是一个拷贝构造"<<endl;......
  • js原型prototype(实例构造函数的属性) __proto__(实例对象的属性) constructor(实例
    functionPerson(name,age){this.name=namethis.age=age}Person.prototype.sayHi=function(){//原型是公共方法解决构造函数new对象公共属性和方法的内存浪费console.log(this.name+'sayhi!!')}constp1=newPerson('aa',12)constp2=new......
  • 什么是构造函数?它有什么作用?
    构造函数是一个特殊的方法,它用于创建对象时初始化对象的实例变量。每个类都至少有一个构造函数,如果没有定义,则会有一个默认的无参构造函数。构造函数与类名相同,没有返回类型。构造函数可以用于为对象分配内存,初始化对象的状态,执行其他初始化任务等。......