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、如果一个头文件要被其他文件所引用,应避免在该文件中声明普通变量,或者声明的同时初始化变量。
常量在定义的时候初始化,之后便不可更改。
阅读全文
0 0
- C/C++代码规范笔记
- rabbitmq-c++(SimpleAmqpClient) 笔记代码
- C代码笔记(一)
- C/C++_unicode相关代码笔记
- c和c++代码精粹 学习笔记
- c高级笔记及代码整理
- C++Primer学习笔记(代码重用)
- rabbitmq-c++(SimpleAmqpClient) 笔记代码一
- rabbitmq-c++(SimpleAmqpClient) 笔记代码二
- rabbitmq-c++(SimpleAmqpClient) 笔记代码三
- rabbitmq-c++(SimpleAmqpClient) 笔记代码四
- rabbitmq-c++(SimpleAmqpClient) 笔记代码五
- rabbitmq-c++(SimpleAmqpClient) 笔记代码六
- 代码笔记 | BP神经网络的C语言代码
- 《c和指针》笔记--自由的c代码
- 《高质量C++/C编程指南》代码规范笔记
- C语言笔记--代码学习笔记--C语言语法--基本操作运算-basic-logorithm
- 操作系统(UNIX内核代码笔记之malloc.c 一)
- 轮播图和小轮播图
- 设计模式学习笔记(二)- -观察者模式
- quartz定时报错,连接失效出现问题
- mfc最详细入门教程
- 听华如技术总监聊聊仿真那些事儿
- c++代码笔记
- GoogleAnalytics文档
- STM32入门系列-使用C语言封装寄存器
- 获取服务器项目地址代码,结果是带IP的
- C++N大名著
- sql查出各个商家中同样产品售价最贵的
- POSTMAN POST方式传入纯数组
- Lightgbm-GPU运行出错(2017.11)boost::filesystem::create_directory...Abort (core dumped)
- vue中vue-core-image-upload组件