常函数和常对象的应用

#include <iostream>
#include <string>
using namespace std;

class student
{
private:
    string name;
    int age;
public:
    student(){}
    student(string name,int age)
    {
        this->name = name;
        this->age = age;
    }

    string getName()
    {
        return this->name;
    }

    int getAge()
    {
        return this->age;
    }

#if 1
    void showStudent()const //常函数,常函数重载
    {
//        this->name = "zhangsan";//error,常函数中不允许修改类的数据成员的值
        cout << "void showStudent()const" << endl;
        cout << this->name << " " << this->age <<endl;
    }

#endif

#if 0
    void showStudent()  //一般函数
    {
        this->name = "zhangsan";    //一般函数中允许修改变量的值
        cout << "void showStudent()" <<endl;
        cout << this->name << " " << this->age <<endl;
    }
#endif
};

#if 0
int showint(int num1) const //error:常函数只能存在于类中
{
    cout << num1 << endl;
}
#endif

int main()
{
    student stu("zhangsan",22); //一般对象,可以调用非常函数,也可以调用常函数
    stu.showStudent();

    const student stu2("lisi",33);  //常对象,不能修改对象的值
    const int i = 10;
    stu2.showStudent();
}
时间: 2024-10-07 07:53:43

常函数和常对象的应用的相关文章

&lt;C++&gt; 类(3):初始化列表 常函数和常量对象 虚函数与多态(包括纯虚函数)

一.初始化列表(初始化列表中必须有的两个内容) 1.类中const的成员变量: ①特点:不能修改 必须初始化 在构造函数后面加冒号 格式为:":变量名(值)" 也就是说 常量必须在初始化列表中初始化 ②执行顺序:构造函数先执行初始化列表 然后执行函数中的内容 1 #include<iostream> 2 using namespace std; 3 4 class CPerson 5 { 6 public: 7 const int a; 8 public: 9 CPerso

C++ 常函数长函数

常函数的意义对与普通函数来说,因为const关键字的增加,体现在对类成员的保护上,现在加以讲解: #include <iostream> using namespace std; class Ctest { private:         int a; public:     Ctest( int a  = 2)     {         this->a = a;     }     int doubleA() const     {         return  a*2;    

常函数

为避免成员函数修改成员变量,则可将成员函数定义为常函数.格式如下. void function_name ( void )const {} 若成员变量是mutable 关键字(去常const_cast)修饰的,则在函数中允许更改 常对象调用常函数,非常对象调用非常函数.常函数与非常函数可重载(this指针类型不同). 若无非常变量,则非常对象可以调用常函数:但常对象不可调用非常函数 #include "stdafx.h" #include <iostream> using

c++ 常成员函数 和 常对象

先明确几个概念: 1. 常对象只能调用常成员函数. 2. 普通对象可以调用全部成员函数. 3. 当对一个对象调用成员函数时,编译程序先将对象的地址赋给this指针,然后调用成员函数,每次成员函数存取数据成员时,由隐含使用this指针.4. 当一个成员函数被调用时,自动向它传递一个隐含的参数,该参数是一个指向这个成员函数所在的对象的指针. 5. 在C++中,this指针被隐含地声明为: X *const this,这意味着不能给this 指针赋值:   在X类的const成员函数中,this指针的

C++中常函数内部的this指针也是const类型的

代码中碰到一个奇怪的现象,在同样的函数中调用this指针,结果却有一个无法通过编译 1 // 读取连接信息 2 void ThirdWizardPage::ReadConnection() 3 { 4 QFile file("oracle.passwd"); 5 if(!file.open(QIODevice::ReadOnly)) 6 { 7 QMessageBox::information(this, tr("打开文件失败"), 8 tr("错误原因:

C++常函数

常函数即在类的成员函数参数列表后放置const的函数,常函数的作用是限制函数体对成员变量的修改,此外,常函数也不能调用非 常函数. 1 #include <iostream> 2 using namespace std; 3 4 class Test 5 { 6 private: 7 int x, y; 8 public: 9 Test() { x = 0; y = 0;} 10 void changeValue() const 11 { 12 x = 7; 13 y = 7; 14 prin

【转】C++ const成员变量和成员函数(常成员函数)

转:http://c.biancheng.net/view/2230.html 在类中,如果你不希望某些数据被修改,可以使用const关键字加以限定.const 可以用来修饰成员变量和成员函数. const成员变量 const 成员变量的用法和普通 const 变量的用法相似,只需要在声明时加上 const 关键字.初始化 const 成员变量只有一种方法,就是通过构造函数的初始化列表,这点在前面已经讲到了,请猛击<C++初始化列表>回顾. const成员函数(常成员函数) const 成员函

agruments应用——求出函数参数的总合&amp;&amp;css函数——设置/读取对象的属性&amp;&amp;当前输入框高亮显

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-

正确理解Python函数是第一类对象

正确理解 Python函数,能够帮助我们更好地理解 Python 装饰器.匿名函数(lambda).函数式编程等高阶技术. 函数(Function)作为程序语言中不可或缺的一部分,太稀松平常了.但函数作为第一类对象(First-Class Object)却是 Python 函数的一大特性.那到底什么是第一类对象呢? 函数是对象 在 Python 中万物皆为对象,函数也不例外,函数作为对象可以赋值给一个变量.可以作为元素添加到集合对象中.可作为参数值传递给其它函数,还可以当做函数的返回值,这些特性