展开

关键词

C++之const成员

C++除了提供静态成员之外,他还提供了constconst主要用于不对类的据成员做出修改的。 由于const的隐藏参this指针变成了const 类名*this,所以const不能修改类的据成员的值,但可以使用类的据成员。 这个const就非常适合get类型的,用于获取类的据成员的值。 一般的写法是这样: 返回值 名(参列表) const { //体 } 实际中可能遇见下面这两种: const 返回值 名(参列表) { //体 } 返回值 const 名(参列表) { //体 } 也就是说const写在哪儿并不影响它成为类的const成员

17620

c++之const修饰成员

: 成员后加const后我们称这个为常; 常不可以修改成员属性 成员属性声明时加关键字mutable后,在常中依然可以修改 常对象: 声明对象前加const 常对象只能调用常: #include<iostream> using namespace std; class Person { public: int age; mutable int tmp ;//用mutable修饰的为特殊变量,可以在常量中修改 void showPerson() const{ //this指针的本质是指针常量,指针的指向是不可以修改的 this = NULL; //即Person* const this; //在后面加了const之后,变成const Person* const this void showPerson() const{ cout << "这是常" << endl; } }; void test() { const Person

16310
  • 广告
    关闭

    腾讯云精选爆品盛惠抢购

    腾讯云精选爆款云服务器限时体验20元起,云数据库19.9元/年起,还有更多热门云产品满足您的上云需求

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

    【玩转腾讯云】C++学习笔记-const,new,delete

    一、const 加入const的意思是你不能修改参,只能读取; const的格式是:[返回值] [名](参列表)const{}; 在外调用这类也分为 const 类名 对象名(参初值 )和 类名 对象名(参初值)调用区别如下表: 类名前面无const 类名前面有constconst 可调用 可调用 无const 可调用 不可调用 再者,签名是包括const的,所以有无 const的同名是可以同时存在的。 ; //对象z1,无可厚非是输出有const的那一个,但是对象z呢? //其实在C++语言有个规则,前面无const会优先调用无const,而不是调用两个 二、new,delete 1、new,delete动作的拆解 //比如Zyf *z2 = new Zyf("ss

    13411

    c和c++的区别 (三)const&(引用)和const*(地址)在中的应用

    return value;//返回值通过eax寄存器带回 } int main(){ int &a=GetInt();//错误 //引用初始化的值要能取地址,寄存器没有地址 修改为:const =GetInt(); return 0; } 二、返回局部变量的地址 //不能返回局部变量的地址或引用 int* GetIntPtr(){ int value=10; //const int value=10;是据,在.data段,这种情况可以返回地址 return &value; //lea eax,[value] } int main(){ int* GetIntPtrRef(){ static int data=10; static int *p=&data; return p; } 临时量的产生由三种不同的情况: 1.调用之前 2.的return语句处 3.调用之后

    5010

    c++学习之析构const总结,你真的掌握了吗?

    (调用顺序与声明顺序相同) 调用类自身的构造 引出:析构与对应的构造的调用顺序相反,也就是对象构造与对象析构(消亡)的顺序相反。 ;下面我们来看一下const成员的定义和规则: (1)定义: Type ClassName::function(Type p)const 类中的声明与实际定义中都必须带const关键字,注意 const结尾 (2)规则: const对象只能调用const的成员,不能调用普通的成员,例如: #include <stdio.h> class Test { int mi; 修饰的类对象调用普通成员报错,现在我们把普通成员getMi()改成const成员: #include <stdio.h> class Test { int mi; public: : assignment of member ‘Test::mj’ in read-only object mj = 89; const 成员中只能调用 const 成员: #include

    7850

    医疗字阅片-医学影像-中间插播一下-es6-使用const加箭头声明相对于function声明有什么好处?

    [OHIF-Viewers]医疗字阅片-医学影像-中间插播一下-es6-使用const加箭头声明相对于function声明有什么好处? 今天的文章内容将会从以下几个方面,介绍箭头: 使用语法 this穿透 箭头和传统的区别 使用语法 箭头有四种使用语法 1、单一参的单行箭头 如下段代码所示,很简单: const fn ,如下段代码所示: const fn=(foo,bar) => foo+bar 在实际开发中,的参不会只有一个,在箭头中,多参的语法跟普通一样,用括号包裹参项。 书写箭头的过程中,我们应该注意以下几点: 1、使用单行箭头时,应避免换行 错误的用法,如下段代码所示: const fn=x => x* //SyntaxError 正确的写法,如下: const 在使用箭头时,我们一定要理解箭头和传统的区别,如果功能简单,只是简单的逻辑处理,尽量使用箭头const 有什么好处?

    19120

    声明后面的const用法

    void function() const{} 通常我们会看到一些声明后面会跟着一个const,这个const是做什么的呢? 看一下下面的例子,就知道了。 { cout<<num<<endl; } void out3() const{ num+=10; //出错,const不能修改其据成员 aa a2; a2.out1(); // 错误,const的成员 不能访问非const a2.out2(); a2.out3(); return 0; } 在类成员的声明和定义中 , const不能对其据成员进行修改操作。 const的对象,不能引用非const的成员

    43850

    成员末尾加个 const 是什么意思

    问题 比如下面的代码, class foobar { public: operator int () const; const char* foo() const; }; 成员末尾加个 const 是什么意思? 回答 成员末尾加个 const 表示该不允许修改成员变量(除 mutable 修饰的变量),且也只能调用 const 成员。 " << std::endl; } void Boo() { } void Boo_c() const { } }; int main() { MyClass a; const MyClass b; a.Foo(); b.Foo(); } 输出: Foo Foo const

    8810

    C++ const常量对象、常量成员和常引用

    --- — 2 — 常量成员 在类的成员后面可以加 const 关键字,则该成员成为常量成员。 class Sample { public: void GetValue() const {} // 常量成员 void func(){} int m_value; }; 常量成员 int GetValue() { return 2*m_value; } // 普通成员 int m_value; }; int main() { const const int & r = n; r = 5; // error n = 4; // ok! 对象作为的参时,生产该对象参是需要调用复制构造的,这样效率就比较低。 可以用对象的常引用作为参,如: class Sample { ... }; void Func(const Sample & o) // 对象的常引用作为参 { ... } 这样中就能确保不会出现无意中更改

    65620

    nn.init 中实现的初始化 uniform, normal, const, Xavier, He initialization

    文章第一段通过sigmoid激活讲述了为何初始化? ? ,此时输入值变得很大,而sigmoid在大输入值写倒趋近于0,反向传播时会遇到梯度消失的问题 其他的激活同样存在相同的问题。 5. kaiming (He initialization) Xavier在tanh中表现的很好,但在Relu激活中表现的很差,所何凯明提出了针对于Relu的初始化方法。 两的参: a:该层后面一层的激活中负的斜率(默认为ReLU,此时a=0) mode:‘fan_in’ (default) 或者 ‘fan_out’. 使用fan_in保持weights的方差在前向传播中不变;使用fan_out保持weights的方差在反向传播中不变 针对于Relu的激活,基本使用He initialization,pytorch

    5.5K10

    Use const instead prefer-const

    Use 'const' instead prefer-const 大概意思就是 标识符'errMsg'永远不会被重新分配;使用'const'而不是'let'。 (prefer-const) 解决方法就是在eslint配置文件或者tslintt配置文件增加 { "rules":{ "prefer-const": "off" } }

    20820

    从零开始学C++之构造与析构(二):初始化列表(const和引用成员)、拷贝构造

    再提一点,如果类是继承而来,基类没有默认构造的时候,基类的构造要在派生类构造初始化列表中调用。 (二)、const成员、引用成员的初始化 #include <iostream> using namespace std; // const成员的初始化只能在构造初始化列表中进行 // 引用成员的初始化也只能在构造初始化列表中进行 二、拷贝构造 (一)、拷贝构造 功能:使用一个已经存在的对象来初始化一个新的同一类型的对象 声明:只有一个参并且参为该类对象的引用 Test::Test(const Test &other) 这是因为如果拷贝构造中的参不是一个引用,即形如CClass(const CClass c_class),那么就相当于采用了传值的方式(pass-by-value),而传值的方式会调用该类的拷贝构造 传参和返回都没有调用拷贝构造,初始化t2 时会调用拷贝构造。 将TestFun(t); 换成 const Test&  t2 = TestFun4(t); ?

    62200

    【C++】const对象和const成员

    如果一个对象被定义成const对象,那么它就不能调用这个类中的非const成员const对象调用的成员一定都得是const! \mian.cpp 34 1 test2 其实就是告诉我们const对象不能引用非const成员 为什么要有这个规则: 因为在非const成员内部可能对对象进行修改,比如set " << endl; } 每一个构造都需要初始化这个const成员,而且复制构造也需要初始化num,因为复制构造也是一种构造! 3.const成员 const成员只能被const对象引用。const成员内可以引用const据成员,也可以引用非const据成员,但不能修改非const据成员的值。 但不能调用非const成员

    29110

    7.3 const

    7.3 const Cg 语言也提供 const 修辞符,与 C\C++中含义一样,被 const 所修辞的变量在初始化之后不能再去改变它的值。 下面的例子程序中有一个声明为 const 的变量被赋值修改: const float a = 1.0; a = 2.0; //错误 float b = a++; //错误 编译时会出现错误提示信息:error C1026: assignment to const variable。 const 修辞符与 uniform 修辞符是相互独立的,对一个变量既可以单独使用 const 或者 uniform,也可以同时使用。

    28220

    CC++ const

    (2)只有类的非静态成员可以被申明为常,原因是静态成员不含this指针,属于类级别的。其它类型的(如外部等)不能被申明为常。 (3)一个类的两个成员,如果的返回值类型、名、的参列表完全相同,一个是常,一个是普通,那么它们构成重载关系。 (4)非只读对象(如a1)调用某个时,先寻找它的非const版本,如果没有找到,再调用它的const版本。而常对象(a2),只能调用类中定义的常,否则出现编译错误。 (5)存在const和非const版本的成员时,普通对象若想调用const,应该通过建立该对象的常引用或指向该对象的常指针。 3.const修饰的参的返回值 在定义时常用到const,主要用来修饰参和返回值。其目的是让编译器为程序员做变量的只读性检查,以使程序更加健壮。

    33810

    1.C和C++区别,以及const分析(底层const顶层const)

    不允许定义多个同名全局变量,而C却可以重复定义 1.3 C++的register只是个兼容作用 1.4 C++的所有标识符都必须有声明类型 比如,在C中: f(): 表示默认返回值是int,可以接受任意个int型参 在C++中: int f() int f(void)表示都一样,没有参,返回值为int型的 int f(i): 由于i没声明类型,会报错 1.5 结构体升级 例如,在C中定义一个结构体: typedef 这是因为执行预处理器时,会将遇见到的所有a变为3,所以编译器看到的是printf("a=%d",3); 而取消//printf("b=%d",b); 屏蔽后,程序则会报错,是因为b的作用域只在f()里有效 被 mutable 修饰的变量,将永远处于可变的状态,即使在一个 const 中,甚至结构体变量或者类对象为 const,其 mutable 成员也可以被修改。 { mval=num; cout<<mval<<endl; //打印10,能在const中对mutable变量赋值 } }; int

    22120

    const 详解

    const更大的魅力是它可以修饰的参、返回值,甚至的定义体。被const修饰的东西都受到强制保护,可以预防意外的变动,能提高程序的健壮性。 所以很多C++程序设计书籍建议:"Use const whenever you need"。 二、const成员     任何不会修改据成员的都应该声明为const类型。 如果在编写const成员时,不慎修改了据成员,或者调用了其它非const成员,编译器将指出错误,这无疑会提高程序的健壮性。 以下程序中,类stack的成员GetCount仅用于计,从逻辑上讲GetCount应当为const。编译器将指出GetCount中的错误。     Pop();     //编译错误,企图非const成员 return m_num;   }   const成员的声明看起来怪怪的:const关键字只能放在声明的尾部

    46210

    ES6 - let & const

    [const特殊] var和let定义变量,const定义常量 let和const的特性详解: let/const声明的变量不会进行变量声明提升: ? let/const重复声明一个变量报错。 如果这个变量已经被var过了,也不能再继续let/const定义了: ? ? 延伸到的行参上: 行参在内部也是相当于var了一个变量的存在。 用var定义变量覆盖行参: ? 但是如果在内部用let声明一个和行参同名的变量,就会报错: ? let/const声明的变量不会挂在到window上,var会(容易造成混乱和冲突,window上的原有属性不能随便改)。 ? 总结特性: 他其实跟var还是挺像的,只不过var的是局部作用域、let和const是局部块级作用域;var的变量声明提升,let和const的变量声明不提升且报错而已。 但是const就不一样了,const声明的是常量,转成var后不会有这个功能,但是babel创建了一个_readOnlyError的内部报错对象,监测到const常量被重新赋值后就调用该向控制台抛出了一个错误以提示开发者

    32820

    var、let、const

    b)//undefined let b =4; } { console.log(c);//Uncaught ReferenceError: c is not defined let c = 5; } const

    24930

    const指南

    基本词义  意思就就是说利用const进行修饰的变量的值在程序的任意位置将不能再被修改,就如同常一样使用!  使用方法 const int a=1;//这里定义了一个int类型的const变量a; 但对于指针来说const仍然是起作用的,以下有两点要十分注意,因为下面的两个问题很容易混淆!  int a=10; int b=20; const int *pi; pi=a; cout <<*pi << "|" << a <<endl; pi=b; cout <<*pi << "|" <<b <<endl; cin.get(); } 上面的代码中最重要的一句是 const int *pi  这句从右向左读作: pi是一个指向int类型的,被定义成const int *const pi=a; cout <<*pi << "|" <<a <<endl; cin.get(); } 上面的代码中最重要的一句是 const int *const pi

    251100

    相关产品

    • 云函数

      云函数

      云函数(Serverless Cloud Function,SCF)是腾讯云为企业和开发者们提供的无服务器执行环境,帮助您在无需购买和管理服务器的情况下运行代码。您只需使用平台支持的语言编写核心代码并设置代码运行的条件,即可在腾讯云基础设施上弹性、安全地运行代码。SCF 是实时文件处理和数据处理等场景下理想的计算平台。

    相关资讯

    热门标签

    扫码关注云+社区

    领取腾讯云代金券