zoukankan      html  css  js  c++  java
  • 常对象指针

    // 常量.cpp : 定义控制台应用程序的入口点。
    //

    #include "stdafx.h"
    #include <iostream>
    using namespace std;
    class MyClass
    {
    private:
    int m_iX;
    static int m_iY;
    public:
    MyClass(){cout<<"1";}
    ~MyClass(){cout<<"2";}
    void setX(int iX){m_iX=iX;}
    void setY(int iY){m_iY=iY;}
    int getX(){return m_iX;}
    int getY(){return m_iY;}
    //static int getX2(){return m_iX;} // 错误
    static int getY2(){return m_iY;}
    };
    int MyClass::m_iY = 0;

    int _tmain(int argc, _TCHAR* argv[])
    {
    const int icX = 0;
    //icX = 2; // error C3892: “icX”: 不能给常量赋值

    int const icY = 0;
    //icY = 2; // error C3892: “icY”: 不能给常量赋值

    //int & irX = icX; // error C2440: “初始化”: 无法从“const int”转换为“int &”

    //int & irY = icY; // error C2440: “初始化”: 无法从“const int”转换为“int &”

    //int * ipX = &icX; // error C2440: “初始化”: 无法从“const int *”转换为“int *”

    //int * ipY = &icY; // error C2440: “初始化”: 无法从“const int *”转换为“int *”
    {
    const MyClass c1; // 或者 MyClass const c1;
    //int iX = c1.getX(); // error C2662: “MyClass::getX”: 不能将“this”指针从“const MyClass”转换为“MyClass &”
    //int iY = c1.getY(); // error C2662: “MyClass::getY”: 不能将“this”指针从“const MyClass”转换为“MyClass &”
    int iY = c1.getY2(); // 正确

    MyClass c2,c3;
    {
    const MyClass * pc2 = &c2;
    pc2 = &c3; // 正确
    //pc2->getX(); // error C2662: “MyClass::getX”: 不能将“this”指针从“const MyClass”转换为“MyClass &”
    }
    {
    MyClass const * pc2 = &c2;
    pc2 = &c3; // 正确
    //pc2->getX(); // error C2662: “MyClass::getX”: 不能将“this”指针从“const MyClass”转换为“MyClass &”
    }
    {
    MyClass * const pc2 = &c2;
    //pc2 = &c3; // error C3892: “pc2”: 不能给常量赋值
    pc2->getX(); // 正确
    pc2->setX(2); // 正确
    }
    }
    // 注:作为函数参数使用 MyClass * const 表示指针的值不可变,而不是对象的值不可变。
    // 其它定义如:const MyClass * 或 MyClass const * 的意义不大。
    return 0;
    }


     

  • 相关阅读:
    SQL面试题:有A B C三列,用SQL语句实现:当A列大于B列时选择A列否则选择B列
    Centos下Yum安装PHP5.5
    docker 容器内服务自启动
    centos6.6系统初始化脚本
    不重启linuxVMWare虚拟机添加虚拟磁盘
    linux(centos6)搭建ftp服务器
    记一次扩容操作
    mongodb数据迁移的两种方式
    mongodb 数据库操作--备份 还原 导出 导入
    关于PHP参数的引用传递和值传递
  • 原文地址:https://www.cnblogs.com/plus/p/2409009.html
Copyright © 2011-2022 走看看