c++代码笔记

来源:互联网 发布:flash cs6软件 编辑:程序博客网 时间:2024/06/11 15:59

1、通过类的对象调用类的成员函数。

    不同文件之间调用函数:(A中调用B中的函数)

    B中线程加锁获得当前实例的引用。

 .h:  public :static 类名 &getInstance();

.cpp:

类名 & 类名::getInstance() {   static Configuration *pointer = NULL;   if (pointer == NULL) {      static pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;      pthread_mutex_lock(&mutex);      if (pointer == NULL) {         static Configuration instance;         pointer = &instance;      }      pthread_mutex_unlock(&mutex);   }   return *pointer;}
   A中包含B的头文件,然后:作用域::getInstance.要调用的函数即可。
2、静态的成员函数只能使用类的静态变量。
   C++规定const静态类成员可以直接初始化,其他非const的静态类成员需要在类声明以外初始化。
     
   类的静态变量是属于整个类的,是所有对象共有的。
   不能通过类名来调用类的非静态成员函数。
   通过类的对象调用静态成员函数和非静态成员函数
   静态成员函数中不能引用非静态成员。(因为静态成员函数属于整个类,在类实例化对象之前就已经分配空间了,而类的非静态成员必须在类实例化对象后才有内存空间,所以这个调用就出错了,就好比没有声明一个变量却提前使用它一样。)
   类的非静态成员函数可以调用用静态成员函数,但反之不能。
     不要试图在头文件中定义(初始化)静态数据成员。在大多数的情况下,这样做会引起重复定义这样的错误。即使加上#ifndef #define #endif或者#pragma once也不行。
   类的静态成员变量在使用前必须先初始化。(返回类型 作用类::静态变量名 = value)(否则会说该变量没有定义)
   (如果出现普通变量显示没有定义,则是因为他缺少类型定义的头文件)eg:ssize_t需要包含头文件:#include<cstddef>
3、const成员函数 (void add(int)const)(对类的数据成员不可以修改)。

1)const成员函数可以访问非const对象的非const数据成员、const数据成员,也可以访问const对象内的所有数据成员;

2)非const成员函数可以访问非const对象的非const数据成员、const数据成员,但不可以访问const对象的任意数据成员;

3)作为一种良好的编程风格,在声明一个成员函数时,若该成员函数并不对数据成员进行修改操作,应尽可能将该成员函数声明为const 成员函数。

4、静态成员函数不可以同时声明为 virtual、const、volatile函数。
5、类成员的初始化
   首先为类中的静态变量分配空间,并对内存进行置0;初始化静态变量执行 静态代码块中的语句 ;类变量的初始化完成后。执行main中对象的创建。

6、如果一个头文件要被其他文件所引用,应避免在该文件中声明普通变量,或者声明的同时初始化变量。
常量在定义的时候初始化,之后便不可更改。
原创粉丝点击