C++中有关 const & 内敛 & 友元&静态成员 的用法比较杂乱,算是C++中一个麻烦的部分.现速速的对它们做大致的总结,了解它们当中常见的用法和陷阱. const修饰的成员函数&对象 在成员函数后面加const,const修饰this指针所指向的对象,也就是保证调用这个const成员函数的对象在函数内不会改变 /************************************************************************* >…
底层const是代表对象本身是一个常量(不可改变):      顶层const是代表指针的值是一个常量,而指针的值(即对象的地址)的内容可以改变(指向的不可改变): #include <iostream> int main() { ; int* const p1=&i; //-----不能改变p1的值,这是一个顶层const const int b=i; //-----不能改变b的值,这是一个顶层const(一般变量前const都是顶层const) const int* p2=&…
今天的重载是基于C++ 类模板的,如果需要非类模板的重载的朋友可以把类模板拿掉,同样可以参考,谢谢. 一.类模板中的友元重载 本人喜好类声明与类成员实现分开写的代码风格,如若您喜欢将类成员函数的实现写在类声明中,那么可以跳过该部分. 请看下面这段代码: 头文件: #pragma once template<typename T> class CLA { T m_value; public: CLA(const T&); friend CLA operator+(const CLA&am…
const 1.使用const来定义常量 const int num = 10; //应该在声明时进行初始化,否则该常量的值是不确定的,而且无法修改 2.const与指针 指向常量的指针(const修饰的是指针指向的内容) //指向常量的指针 double rates[5] = {88.9, 100.12, 59.2, 111.1, 23.2}; const double *pd = rates; cout << pd[2] << "\n"; pd[2] = 6…
前言 c++中使用到const的地方有很多, 而且const 本身也针对不同的类型可能有不同的含义, 比如对指针就有顶层和底层. 本节就是探讨关于C++中const的在不同的地方不同表现或含义. const 关于const : const修饰的对象一旦创建一般就不能改变, 所以对于const对象必须进行初始化. int i = 0; const int j; // error. 必须进行初始化 const int j = 0; 初始化时并不关心初始化对象的是const还是非const int i…
分部类型 可以在多个源文件中为一个类型编写代码.特别适合用于部分代码是自动生成,而其他部分的代码为手动类型. 多个源代码文件组成的类型为分部类型 #region 7-1演示分部类型的混合声明 partial class Example<TFirst, TSecond> : IEquatable<string> where TFirst : class//接口和类型的参数约束,如果实现基类,则必须为EventArgs { public bool Equals(string other…
定义抽象数据类型 定义在类内部的函数是隐式的inline函数. const成员函数 又叫做常量成员函数, 成员函数参数列表之后紧跟const关键字, const修饰的是类this指针. 默认情况下this的类型是指向类类型非常量版本的常量指针. 假如有一个名为MyClass的类, 在该类的普通成员函数中, this类型为MyClass *const类型, 即this本身不可改变, 但是可以改变this所指对象的成员变量. 对于该类的const成员函数, this类型为const MyClass…
1.空类的默认函数 一般情况下,对于任意一个类A,如果程序员不显示的声明和定义上述函数,C++编译器将会自动的为A产生4个public inline(公有.内联)的默认函数,这4个函数最常见的形式为:       (1)默认构造函数          A() {}       (2)默认拷贝构造函数   A(const A&){}       (3)默认析构函数         ~A() {}       (4)默认赋值函数         A& operator = (const A &…
比較运算符的重载通常有两种方式: 第一:作为成员函数重载 曾经几章的Student类为例: <span style="font-family:Microsoft YaHei;font-size:18px;">class Student{ private: string name; int age; float score; //const成员变量 const int max_length; //定义静态成员变量 static int number; static float…
思想原则: 以类为例,类最终要处理的是数据,方法只是过程,最终要改变的是private中的数据成员状态.程序设计也是如此,要的是数据. 一.const的作用 const定义变量:定义了一个不可修改的常量: const用于返回值:通常是用于限定指针和引用,用于防止返回值处于左值时被修改: const用于参数:防止原数据被修改: const用于函数名后:防止类成员函数调用时被修改: 二.引用.指针.值传递 引用除了在函数头的参数中添加了&符号,其他行为和值传递是一样的: 引用是一种别名的行为,使用的…