//类中的静态成员变量,静态成员函数
#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
using namespace std; /*
静态成员函数是属于整个类,
static修饰的变量,是属于类,,所有的对象都能共享用。
在类的静态数据成员函数中,是不能调用具体的对象的变量的属性,
这是因为static修饰的变量是整个类共享,在静态成员函数中使用一个对象的成员属性
c++编译器无法知道这个成员属性是哪个对象的
所以在静态成员函数中只能使用静态成员变量 */ class Point{
public:
Point(int _x, int _y){
cout << "自定义的有参构造函数被调用了1" << endl;
x = _x;
y = _y;
}
Point(Point &pm){
cout << "我是自定义拷贝构造函数!" << endl;
}
~Point(){
cout << "自定义的析构函数被调用了3" << endl;
}
static void Getnum(){
cout << z << endl;
}
static void Setnum(int c){
z = c;
}
private:
int x;
int y;
//静态成员变量
static int z;
}; //类的静态成员初始化(正确示例)
int Point::z = ; void ProtectA(){
//Point p1();
//警告 warning C4930: “Point p1(void)”: 未调用原型函数(是否是有意用变量定义的?)
//分析:通过观察发现这行代码c++编译根本不会执行,要调用无参构造函数 Point p1;这样就可以
//调用拷贝构造函数 应该使用 Point p1(p2);
//就算有无参构造函数 这样写也会有警告 有参函数倒是可以这样初始化 //Point p2(1,1,2);
//报错 error LNK2001: 无法解析的外部符号 "private: static int Point::z" (?z@Point@@0HA)
//这说明类的静态成员变量不可以用构造函数初始化 //类的静态成员初始化(错误示例)
//int Point::z = 0;
//报错 error C2655: “Point::z”: 当前范围内的定义或重新声明非法
//首先:静态变量在Point类中是私有的 不让外部访问
//其次:静态变量已经在上面定义了 这里再次定义 属于重定义 //打印静态成员变量的值 //调用静态成员函数的方法1
Point::Getnum(); //调用静态成员函数的方法2
Point p3(, );
p3.Setnum();
Point::Getnum();
p3.Getnum(); } void main(){
ProtectA();
system("pause");
}

C++ 类中的静态成员变量,静态成员函数的更多相关文章

  1. MFC 如何在一个类中使用在其他类中定义的变量或函数

    [声明:本文的知识点来源于网络,参考网址:https://blog.csdn.net/bill_ming/article/details/7407848] [以下三种方法亲测有效,可以根据具体情况来选 ...

  2. c++,static 静态成员变量 / 静态成员函数

    静态成员变量: //静态成员变量(static) // //1.如果想在同类的多个对象之间实现数据共享 ,可以用静态 //成员变量,即用static修饰的成员变量,例 static int a; // ...

  3. c++中静态成员变量 静态成员函数 全局变量与静态函数的关系 字符串中括号的匹配编程 (笔试经历)

    笔试经历 1 类中的静态变量不能通过构造函数参数列表来初始化,因为静态变量不属于哪个对象.同时静态变量在不初始化的情况下系统会自动为变量赋值,数值型赋值为零,字符型赋值为空. 非静态变量只有在定义时才 ...

  4. c++——静态成员变量成员函数

    静态成员变量成员函数 思考:每个变量,拥有属性.有没有一些属性,归所有对象拥有? 4.1静态成员变量 1)定义静态成员变量 关键字 static 可以用于说明一个类的成员, 静态成员提供了一个同类对象 ...

  5. Python类中的 私有变量和私有方法

    默认情况下,Python中的成员函数和成员变量都是公开的(public),在python中没有类似public,private等关键词来修饰成员函数和成员变量.在python中定义私有变量只需要在变量 ...

  6. PHP类中的__get()和__set函数到底有什么用

    PHP类中的__get()和__set函数到底有什么用 一.总结 一句话总结:当试图获取一个不可达变量时,类会自动调用__get.同样的,当试图设置一个不可达变量时,类会自动调用__set.在网站中, ...

  7. ES6 class类中定义私有变量

    ES6 class类中定义私有变量 class类的不足 看起来, es6 中 class 的出现拉近了 JS 和传统 OOP 语言的距离.但是,它仅仅是一个语法糖罢了,不能实现传统 OOP 语言一样的 ...

  8. 【转载】 C++多继承中重写不同基类中相同原型的虚函数

    本篇随笔为转载,原文地址:C++多继承中重写不同基类中相同原型的虚函数. 在C++多继承体系当中,在派生类中可以重写不同基类中的虚函数.下面就是一个例子: class CBaseA { public: ...

  9. 基类中定义的虚函数在派生类中重新定义时,其函数原型,包括返回类型、函数名、参数个数、参数类型及参数的先后顺序,都必须与基类中的原型完全相同 but------> 可以返回派生类对象的引用或指针

      您查询的关键词是:c++primer习题15.25 以下是该网页在北京时间 2016年07月15日 02:57:08 的快照: 如果打开速度慢,可以尝试快速版:如果想更新或删除快照,可以投诉快照. ...

  10. C++中所有的变量和函数都必须有类型

    /* C++中所有的变量和函数都必须有类型 C语言中的默认类型在C++中是不合法的 函数f的返回值是什么类型,参数又是什么类型? 函数g可以接受多少个参数? */ //更换成.cpp就会报错 f(i) ...

随机推荐

  1. Android 代码实现来电拦截

    为了更好地理解这个Demo,我先向大家介绍一下需求与功能. 需求: 每天都会有很多无聊的电话,比如推销商品等,占用我们大量时间不说,有时候还会打乱我们的思路,扰乱我们的正常生活.所以实现一个对某些号码 ...

  2. 删除android ScrollView边界阴影方法

    XML文件中添加以下方法:   android:fadingEdge=”none”   或者,代码中设置为false即可   ScrollView.setHorizontalFadingEdgeEna ...

  3. ASP.NET MVC4 Jquer 日期控件 测试范例

    <!doctype html>   <html lang="en"> <head> <meta charset="utf-8&q ...

  4. 页面刷新 vuex 数据重新被初始化

    1.原因 vuex里用来存储的也只是一个全局变量,当页面刷新,该全局变量自然不存在了. 2.解决 使用localStorage存储一份 (1)storage.js /** * vuex localSt ...

  5. 初学者必知的Python中优雅的用法

    转自:http://python.jobbole.com/81393/    

  6. 基于终端的日志工具logview

    概述 logview是一个Shell脚本编写的基于终端的日志工具, 具有终端通知, email通知, 错误信息颜色配置, 以及灵活强大的监控配置. 还可以灵活的配置脚本监控的时间, 以及错误发生时需要 ...

  7. Mysql字符串中有数字的排序问题

    此方法是我见过最聪明的写法,不过不知道有没有隐含的bug: 参考地址 select id, col from tableName order by length(col) asc, col asc这种 ...

  8. 【LeetCode】85. Maximal Rectangle

    Maximal Rectangle Given a 2D binary matrix filled with 0's and 1's, find the largest rectangle conta ...

  9. VS Code - Debugger for Chrome调试js

    最近在自学一些s的内容,用到了vscode来编写代码,一直没有使用过vs调试js的代码,看到左侧有推荐一个插件Debugger for Chrome使用来调试js代码的,对于vs这种开源,需要安装各种 ...

  10. 调整弹出对话框在ASP.NET应用程序的大小

    调整弹出对话框在ASP.NET应用程序的大小 #region 调整弹出对话框在ASP.NET应用程序的大小    protected void PopupWindowControl_Customize ...