C++ 类中的静态成员变量,静态成员函数
//类中的静态成员变量,静态成员函数
#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++ 类中的静态成员变量,静态成员函数的更多相关文章
- MFC 如何在一个类中使用在其他类中定义的变量或函数
[声明:本文的知识点来源于网络,参考网址:https://blog.csdn.net/bill_ming/article/details/7407848] [以下三种方法亲测有效,可以根据具体情况来选 ...
- c++,static 静态成员变量 / 静态成员函数
静态成员变量: //静态成员变量(static) // //1.如果想在同类的多个对象之间实现数据共享 ,可以用静态 //成员变量,即用static修饰的成员变量,例 static int a; // ...
- c++中静态成员变量 静态成员函数 全局变量与静态函数的关系 字符串中括号的匹配编程 (笔试经历)
笔试经历 1 类中的静态变量不能通过构造函数参数列表来初始化,因为静态变量不属于哪个对象.同时静态变量在不初始化的情况下系统会自动为变量赋值,数值型赋值为零,字符型赋值为空. 非静态变量只有在定义时才 ...
- c++——静态成员变量成员函数
静态成员变量成员函数 思考:每个变量,拥有属性.有没有一些属性,归所有对象拥有? 4.1静态成员变量 1)定义静态成员变量 关键字 static 可以用于说明一个类的成员, 静态成员提供了一个同类对象 ...
- Python类中的 私有变量和私有方法
默认情况下,Python中的成员函数和成员变量都是公开的(public),在python中没有类似public,private等关键词来修饰成员函数和成员变量.在python中定义私有变量只需要在变量 ...
- PHP类中的__get()和__set函数到底有什么用
PHP类中的__get()和__set函数到底有什么用 一.总结 一句话总结:当试图获取一个不可达变量时,类会自动调用__get.同样的,当试图设置一个不可达变量时,类会自动调用__set.在网站中, ...
- ES6 class类中定义私有变量
ES6 class类中定义私有变量 class类的不足 看起来, es6 中 class 的出现拉近了 JS 和传统 OOP 语言的距离.但是,它仅仅是一个语法糖罢了,不能实现传统 OOP 语言一样的 ...
- 【转载】 C++多继承中重写不同基类中相同原型的虚函数
本篇随笔为转载,原文地址:C++多继承中重写不同基类中相同原型的虚函数. 在C++多继承体系当中,在派生类中可以重写不同基类中的虚函数.下面就是一个例子: class CBaseA { public: ...
- 基类中定义的虚函数在派生类中重新定义时,其函数原型,包括返回类型、函数名、参数个数、参数类型及参数的先后顺序,都必须与基类中的原型完全相同 but------> 可以返回派生类对象的引用或指针
您查询的关键词是:c++primer习题15.25 以下是该网页在北京时间 2016年07月15日 02:57:08 的快照: 如果打开速度慢,可以尝试快速版:如果想更新或删除快照,可以投诉快照. ...
- C++中所有的变量和函数都必须有类型
/* C++中所有的变量和函数都必须有类型 C语言中的默认类型在C++中是不合法的 函数f的返回值是什么类型,参数又是什么类型? 函数g可以接受多少个参数? */ //更换成.cpp就会报错 f(i) ...
随机推荐
- synthesis-of-weak-property-only-allowed-in-arc-or-gc-mode ARC属性
synthesis-of-weak-property-only-allowed-in-arc-or-gc-mode ARC属性 错误提示: 1:确认你的项目是 ARC环境: 2:如果 ARC下出现上面 ...
- SqlServer字段说明查询及快速查看表结构
SqlServer字段说明查询 SELECT t.[name] AS 表名,c.[name] AS 字段名,cast(ep.[value] )) AS [字段说明] FROM sys.tables A ...
- Java Source Attacher 1.2 发布
Java Source Attacher 1.2 是一款自动帮你附加源代码的Eclipse插件,相信很多Java Coder都有过手动附加源代码的经历,去网上搜索,然后下载下来,最后附加上,很麻烦,而 ...
- 基于Python Tornado的在线问答系统
概述 本项目使用最新的Tornado开发.实现了在线提问,回答,评论等功能.使用到Tornado的generator,长轮询等等技术, 支持MySQL的异步连接. 详细 代码下载:http://www ...
- Android酷炫加载进度动画
概述 本自定义动画进度酷炫View,是加载进度动画的自定义View,继承于ImageView来实现,主要实现蒙层加载进度的加载进度效果. 支持水平左右加载和垂直上下加载四个方向,同时也支持自定义蒙层进 ...
- Solr控制覆盖或覆写索引开关
http://wiki.apache.org/solr/UpdateXmlMessages#Optional_attributes_for_.22field.22 ptional attributes ...
- Django URL中r的意思
例如: urlpatterns = patterns('', # ... (r'^time/plus/\d+/$', hours_ahead), # ... ) 正则表达式字符串的开头字母“r”. 它 ...
- 用户ID的代码生成
public class Uid { private static final String machineIdString = Integer.toHexString(new Object().ha ...
- Android中MVC、MVP、MVVM具体解释
前言 今天有时间就刚好有想写关于这几个名词.对于我来说.事实上这么多名词.思想归根究竟就是要依据项目实际.人员配置来做合理优化,既不能纸上谈兵.又不能畏惧不前.那么合理分阶段架构和完好代码才是关键,本 ...
- Ubuntu下如何检查文件的md5,sha-512码
ubuntu自带程序md5sum,sha512sum md5sum filename sha512sum filename 即可.