//类中的静态成员变量,静态成员函数
#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");
}

最新文章

  1. Hive修改表
  2. 利用border属性制作各种图形。
  3. there is no spatial analyst license available or enabled
  4. 配置IIS应用程序池
  5. Laravel-Administrator enum使用数字key
  6. 走出MFC子类化的迷宫
  7. Android Launcher label和Main Activity保持不一致
  8. 黄聪:VPS服务器好备份工具配置
  9. Java学习笔记-Json
  10. 初识golang
  11. 在Ubuntu12.0至14.04版本之间用Apache搭建网站运行环境
  12. Protobuf动态解析在Java中的应用 包含例子程序
  13. 【Keras】基于SegNet和U-Net的遥感图像语义分割
  14. AsyncTask源码笔记
  15. [转]数据库中间件 MyCAT源码分析——跨库两表Join
  16. thinkphp模板继承
  17. Java操作队列
  18. MSSQL如何将查询结果拼接成字符串
  19. 【k8s】搭建步骤
  20. Ajax的async属性

热门文章

  1. DBA眼中的CLR
  2. Java之深入JVM(6) - 字节码执行引擎(转)
  3. 用css3选择器给你要的第几个元素添加不同样式方法【转发】
  4. /dev/null 和 /dev/zero
  5. 40、JDBC相关概念介绍
  6. 【WEB开发】微信网页授权第三方登录接口(WEB登录)
  7. MySQL-LAST_INSERT_ID();使用注意事项
  8. js加强小结
  9. Mqtt ----心跳机制
  10. 使用PsExec tool在Session 0下运行程序