• 16、C++ Primer 4th 笔记,static(静态)类成员


    1static成员函数没有this形参,它可以直接访问所属类的static成员,但不能直接使用非static成员。

    2、可以通过作用域操作符,对象,引用,指针来调用static成员。

    3、在类外给static成员数据赋值,或定义成员函数时不必要再指定static

    4、因为 static 成员不是任何对象的组成部分,所以 static 成员函数不能被声明为 const。毕竟,将成员函数声明为 const 就是承诺不会修改该函数所属的对象;也不能声明为虚函数。

    保证对象正好定义一次的最好办法,就是将 static 数据成员的定义放在包含类非内联成员函数定义的文件中。

    5、整型const static数据成员就可以在类的定义体中进行初始化。const static数据成员在类的定义体中初始化时,该数据成员仍必须在类的定义体之外进行定义。

    6static成员不是类对象的组合部分,属于类;但是由给定类的全体对象所共享。static 数据成员的类型可以是该成员所属的类类型。非 static 成员被限定声明为其自身类对象的指针或引用。

    7、每个标号为在该标号到下一个标号之间声明的成员设置访问保护。标号可以在类中出现多次。

    8const member function(常量成员函数),一种成员函数,不能改变对象的普通(即,既不是 static 也不是mutable)数据成员。const 成员中的 this 指针指向 const 对象。成员函数是否可以被重载取决于该函数是否为 const

    #include <iostream>
    using namespace std;
    class TestStatic
    {
    public:
    	TestStatic()
    	{
    		cout << "In TestStatic" << endl;
    	}
    	static void output()
    	{
    		cout << "For a Test" << endl;
    		cout << period << endl;
    	}
    	void output1() const
    	{
    		cout << "In output1" << endl;
    	}
    	void output1()
    	{
    		cout << "In output1" << endl;
    	}
    	static int testme;
    	static const int period = 30;
    	static TestStatic mem1;
    	//TestStatic mem2; //error
    	TestStatic* mem3;
    };
    //const int TestStatic::period;
    int TestStatic::testme = 10;
    class TestStatic1: public TestStatic
    {
    public:
    	TestStatic1()
    	{
    		cout << "In TestStatic1" << endl;
    	}
    };
    int main()
    {
    	TestStatic t1;
    	cout << TestStatic::testme << endl;
    	cout << t1.testme << endl;
    	t1.output();
    	TestStatic1 t2;
    	cout << t2.testme << endl;
    	t2.output();
    	return 1;
    }
    

     9、通过公有的静态成员函数访问私有静态数据成员。

    参考

    [1] http://blog.163.com/zhoumhan_0351/blog/static/39954227201002621251123/

    [2] http://blog.163.com/zhoumhan_0351/blog/static/3995422720103179552945/

  • 相关阅读:
    06深入理解C指针之---指针操作和比较
    05深入理解C指针之---指针声明和解引
    04深入理解C指针之---指针优缺点
    03深入理解C指针之---变量与内存
    iOS UIWebView获取403/404
    控制动画时间
    控制动画时间
    iOS中消息的传递机制
    iOS中消息的传递机制
    HTML5能取代Android和iOS应用程序吗?
  • 原文地址:https://www.cnblogs.com/mydomain/p/1991449.html
Copyright © 2020-2023  润新知