×

常量成员函数

常量成员函数(常对象,普通对象,常成员函数以及普通成员函数之间的调用关系)

admin admin 发表于2024-02-24 17:18:35 浏览32 评论0

抢沙发发表评论

大家好,关于常量成员函数很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于常对象,普通对象,常成员函数以及普通成员函数之间的调用关系的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下本站哦,希望对各位有所帮助!

本文目录

常对象,普通对象,常成员函数以及普通成员函数之间的调用关系

常对象 一个常量性的对象不能改变自身的状态,因此当调用常对象的一个成员函数时,必须保证该成员函数是常量性的。 class A{ int a;public: int get() const // 被限定为常量性成员函数 { // a = 111; // error : a 是常量 return a; } int set(int rhs) // 普通成员函数 { return a = rhs; }} A a; // 普通对象实例const AA aa; // 常量性对象实例 a.get(); // okaa.get(); //ok a.set(10); // okaa.set(10); // error : aa 是常量性对象,set成员函数未限定为常量性

C++中,模板类的常量静态成员函数的初始化问题

你想声明什么类型的变量?1.int型声明一个静态常量,因为const常量只能在声明时初始化,所以你直接在类的private部分改为:static const int x = 0;然后把后面template 《class T》int A《T》::x = 0;去掉就可以了。2.T型声明一个静态常量,因为const常量只能在声明时初始化,所以你直接在类的private部分改为:static const T x = 0;然后把后面template 《class T》int A《T》::x = 0;去掉就可以了。不过会面临一个问题,不知道T具体的类型,用0去初始化它可能会不合适。template 《class T》T

C++中怎么让非常量对象访问常量成员函数

常函数只能修改类里面的静态变量。不允许修改普通成员变量。 你在 int f(int s)后面加了一个const,表示这函数是常函数(只能被常量对象或指针或引用调用。当然“非”常量变量编译器允许自动转换为常量,但是不能再转为“非”常量。就算是“非”常量的对象调用这个函数,编译器也会自动先转换为常量对象的)。 请问常量对象是谁? 为什么不能修改?这里其实还没体现出常对象是谁,但是这个函数的声明已经决定以后调用它的都是常对象(含指针类型和引用类型)

成员全是常量的类,怎么实现赋值构造函数

#include 《vector》#include 《algorithm》#include 《iterator》 struct Item{    const int id;     Item(int _id):        id(_id)    {}     Item& operator=(Item const &other)    {        if (this == &other)            return *this;        this-》~Item();        return *new(this)Item(other.id);    }}; std::ostream& operator《《(std::ostream& s, const Item& p){    return s 《《 "Item" 《《 ’(’ 《《 p.id 《《 ’)’;} int main(){    std::vector《Item》 v;    Item a(10);    v.push_back(Item(1));    v.push_back(Item(2));    v.push_back(Item(4));    v.push_back(a);     std::copy(v.begin(), v.end(), std::ostream_iterator《Item》(std::cout,","));     return 0;}

常对象是否一定要调用常成员函数非常对象是否可以调用常成员函数

常成员函数相当于在this指针参数前面加了一个const限定,而默认的情况下const type *是不能转换为type *的。所以,常对像就只能调用常成员函数,而非常对象就都可以调用。

关于常量成员函数到此分享完毕,希望能帮助到您。