error C2662】的更多相关文章

今天在写C++代码的时候遇到一个错误,涉及到了常量的this指针的问题. 简化后的代码如下: #include <iostream> #include <string> using namespace std; class A { private: string str; string getStr(); public: void print() const; }; string A::getStr() { return str; } void A::print() const {…
---恢复内容开始--- 这个错误在于一点:常量对象只能调用常量成员(函数\变量),不能调用非常量成员.另一方面,非常量对象,既可以调用常量成员,又可以调用非常量成员. class A { public: void fun_1() { std::cout << "非常量函数" << std::endl; } void fun_2() const { std::cout << "非常量函数" << std::endl;…
原因:关于const的问题 具体错误:函数的参数列表中参数签名为const,但是却调用了该参数的非const的成员函数 例子: 即使我们知道NoConst()并不会改变类的data成员,编译器依旧会报错. 解决办法:在NoConst的函数签名后面加上const. 总结:const对象不能调用非const的成员函数.…
此博文仅作为C++考研专业课的复习内容. 面向对象 构造函数 在对象被创建的时候将自动调用. 复制构造函数 形参是本类对象的引用.其作用是使用一个已经存在的对象,去初始化一个同类的新对象. 复制构造函数在以下三种情况会被调用. 当用类的一个对象去初始化该类的另一个对象. Point a(1,2); //两种写法都会调用复制构造函数,只是写法上不同. Point b(a);//用对象a初始化b Point c = a;////用对象a初始化b 如果函数的形参是类的对象,调用函数时,进行形参和实参结…
从一个C++菜鸟改函数开始 CString MyClass::GetStringValue() const { return m_strValue; } 这个值可能还没有赋值,好吧,那么我先判断是不是为空,为空就赋值了 CString MyClass::GetStringValue() const { if(m_strValue.IsEmpty()) SetStringValue(); return m_strValue; } 结果,编译就不过,因为有个规则:const函数里面不能调用非cons…
常成员函数 一个const对象可以调用const函数,但不能调用非const成员函数.必须将关键字const放在函数参数表之后,才能说明该函数是一个const成员函数. 声明常成员函数的格式如下: 类型标识符 函数名(参数列表) const; 定义定义如下: 类型标识符 类名::函数名(参数列表) const {//函数体} 在类中定义定义如下: 类型标识符 函数名(参数列表) const {//函数体} 在常成员函数里,不能更新对象的数据成员,也不能调用该类中没有用const修饰的成员函数.如…
        问题: const成员函数和普通成员函数可以是同名同参数吗? 可以,这是一种函数的重载. const成员函数可不可以修改对象的成员变量的值? 不可以修改.//error C3490: 由于正在通过常量对象访问"year",因此无法对其进行修改 非const成员函数是否可以访问const对象成员? 不可以访问. //error C2662: "Time::show_time": 不能将"this"指针从"const Tim…
成员函数后面加const,表示在该函数中不能对类的数据成员进行改变,比如下面的代码: #include <stdio.h> class A { private: mutable int aa; public: A(){} int x() { printf("no const\n"); return aa++; } int x() const { printf("const\n"); return aa++; } }; int main() { A a1;…
const对象中的变量不能被修改,即使const对象中的函数也不能修改该对象中的变量值 #include <iostream> using namespace std; //----------------------------------------------- class Test { public: int x; Test(); void change(int a); }; Test::Test() { ; } void Test::change(int a ) { this->…
#include <iostream> using namespace std; class Test { public: int x; int y; void const_m1() const; void const_m2() const; void m3(); void m4(); }; /** * //1常成员函数不能修改成员变量的值 * //2常成员函数只能调用常成员函数,不能调用普通成员函数 * //3普通成员函数可以调用常成员函数 */ void Test::const_m1(vo…