1.静态成员函数可以用普通函数指针储存,普通成员函数必须用类函数指针储存class A
{
public:static void fun(){cout << "hello world" << endl;}
public:void fun2(){}
};
int main()
{void(*p)() = &A::fun;//用普通函数指针,正确void (*p1)() = &A::fun2;//用普通函数指针,错误void(A::*p2)() = &A::fun2;//正确,用类的函数指针void(A::*p3)() = &A::fun;//错误,静态成员函数用类函数指针
}2.静态成员函数不可以调用非静态成...
1.静态成员
(1)由keywordstatic修饰
静态变量定义语句在编译阶段就运行,运行过程中不再运行。
(2)分类:静态数据成员、静态成员函数。
(3)静态成员时类的全部对象共享的成员,而不是某一个对象的成员。
2.静态成员的使用
(1)在定义说明前加上statickeyword。比如:
static int x;
(2)静态数据成员必须进行初始化,而且初始化必须在类外完毕。
(3)静态数据成员的初始化
数据类型 类名::静态数据成员名 = 值。//注意...
/**
* 书本:【ThinkingInC++】
* 功能:函数内部的静态变量
* 时间:2014年9月17日18:06:33
* 作者:cutter_point
*/#include "../require.h"
#include <iostream>using namespace std;char oneChar(const char* charArray=0)
{const static char* s; //自动初始化为0,这个const表示这个指针指向的是char类型的指针,//不能变成其他的指针类型或变成非指针,地址可以变,类型不能变,而且这个只初始化一次if(charArray){s=charArray...
今天研究用回溯法解决八皇后问题,碰到了一个有趣的小问题。看这篇随笔前,最好先看看我上一篇所写的 c++ 内存分配中一个有趣的小问题。先看代码 1#pragma once2#pragma execution_character_set("utf-8")3 #include <iostream>4 #include <cstdio>5using std::cout;6using std::endl;7 8constint COLUMNS = 8;9constint ROWS = 8;
10int Matrix[COLUMNS][ROWS] = { 0 };
1112void print()
13{
14for (int row = 0; row < ROWS; +...
有些成员变量的数据类型比较特别,它们的初始化方式也和普通数据类型的成员变量有所不同。这些特殊的类型的成员变量包括:a.引用b.常量c.静态d.静态常量(整型)e.静态常量(非整型) 常量和引用,必须通过参数列表进行初始化。 静态成员变量的初始化也颇有点特别,是在类外初始化且不能再带有static关键字,其本质见文末。参考下面的代码以及其中注释:#include <iostream> using namespace std;class BClass {public: BClass...
1.全局变量 全局变量无疑要在main函数开始前执行完成,但可细分为在编译时和在运行时初始化,即static initialization和dynamic initialization。 static initialization 静态初始化按照我的理解,是针对那些较为简单的,c++内部定义的数据结构,如int,double,bool及其数组结构的初始化。又可分为zero和const两种方式。 对于zero初始化,编译时编译器将其分配在.bss段,不占用rom空间;而const初始化,也就...
# 声明要求的 cmake 最低版本cmake_minimum_required(VERSION 2.8)# 声明一个 cmake 工程project(helloSLAM)# 设置编译模式set( CMAKE_BUILD_TYPE "Debug" )# 共享库add_library(hello_shared SHARED libhelloslam.cpp)# 语法:add_executable( 程序名 源代码文件 )add_executable(helloSLAM uselibhello.cpp)# 将库文件链接到可执行程序上target_link_libraries(helloSLAM hello_shared)原文:https://www.cnblogs.com/shuimuqin...
静态成员的初始化要在类外不然报错error: ISO C++ forbids in-class initialization of non-const static member ‘***‘但是声明为const的变量就可以了,即使是static的#include <iostream>
#include <cstdlib>
usingnamespace std;
class spz
{
public:spz(){cout<<"构造调用"<<endl;}staticvoidget(){cout<<"静态成员e的值为"<<e ++<<endl;cout<<"静态数组内容如下:"<<endl;for(auto k : d){///如果要修改值 需要引用 for(int ...
引用包装器 std::ref(变量)#include<iostream>template<class T>
void com(T arg)//模板函数,引用无效,引用包装器
{std::cout <<"com ="<< &arg << "\n";arg++;
}void main()
{int count = 10;int & rcount = count;com(count);std::cout << count << std::endl;//std::ref(变量) ,函数模板,引用包装器//com(std::ref(count));com(rcount);std::cout << "main=" << &rcount << "\n";std::cout << count << std::endl;std::cin...
转载请注明出处:http://blog.csdn.net/hongkangwl/article/details/21882459关于静态链表的C实现,网上已经烂大街了,这里就不在废话了。对于本文,纯粹是本屌闲的蛋疼,如有异议,请轻喷。对于每个节点,这里也不能免俗,使用结构体实现struct staticlinklistnode
{int data;//数据int next;//下个数据的存储位置bool used;//是否放在链表中了
};静态链表的类主要仿照STL中实现了一些接口函数class staticlinklist
{
private:sta...
静态成员变量存放于数据段,在编译时产生,故有以下特性: 静态成员变量实际为类域中的全局变量,其初始化也应与全局变量一样,不能再头文件里初始化,应与全局变量初始化的方式一样,初始化时,静态成员变量不收访问限定符限定Test.cpp:
class A
{static int _num;
};
int A::_num = 0;//初始化成功 静态成员变量被类内所有成员变量共享,也被派生类所有成员变量共享 class B :public A
{};
int main()
{A a;a._num++;B b...
类的静态成员不能由类的构造函数来初始化。因为即使不存在类的任何对象时,类的静态成员依然存在并且可以被使用。类的静态成员也不能访问任何类的非静态成员。类名和类对象都可以直接调用静态数据成员。因为静态数据成员在执行构造函数之前都已经存在了。 但如果静态成员是整型或是枚举型const,则可以在类声明中初始化!! static修饰的函数表示该函数是属于类的,而不是属于某一个对象的,没有this指针。 在C++类的成员变量被声明为...
当一个函数不属于某个具体的实例而属于整个类,那么这个函数最好写成静态成员函数,这样就可以直接用类名调用Class::Func() 对于一般成员函数当用obj.Func()调用函数时,编译器会将其编译成TypeOf(obj)::Func()的样式,所以静态成员函数不能这么调用友元函数和静态成员函数都不属于类,调用时都不会传入this,所以不可以使用 只让本类对象共享数据,让成员变量声明为static,静态数据成员的初始化要放在外面,class::name = value;因...
在某项目中,有一些静态库,这些静态库中有类型命名的函数GET_XXX。在一次项目结构调整的时候,我想将调用这静态库的代码编译成DLL,并且将这些Get函数导出,我就直接就这些函数前面添加了_declspec(dllexport),然后代码结构就成为:静态库A: 包括很多 _declspec(dllexport) GET_XXX 函数。动态库B:未直接调用 GET_XXX调用B的应用程序C:动态Load动态库B,然后使用GetProcAddress获取函数地址后使用。 但是很不幸编译出来的中一直...
如果一个成员变量被声明为static,那么该类的所有对象都可以访问该变量;如果一个成员函数被声明为static,那么它可以在类的任何实例被定义之前被调用。默认情况下,每个类的对象(类的一个实例)都有它自己的类的成员变量副本。一个对象的成员变量与同一个类的其他对象的成员变量是独立分开并且有区别的。1.静态成员变量 即由同一个类的所有对象共享的成员变量。要创建这样的成员,只需将static放在变量声明的前面,如下的类所...