int ClassStatic::* pd = &ClassStatic::data;//声明一个指向普通数据成员的指针,pd的类型为(int ClassStatic::*) 整体 //作用域解析运算符优先级最高,所以赋值运算符右侧等价于&(ClassStatic::data) //在这个声明中没有使用某一个对象,所以成员指针pd只记录了成员在类中的位置 c.data = 5;//正常调用 ...
C:自定义类型的参数传递,需要临时对象复制参数,对于临时对象的构造,需要调用构造函数,比较浪费时间,因此我们采取 const 外加引用传递的方法。 并且对于一般的 int、double 等内置类型,我们不采用引用的传递方式。 实例 #include<iostream>usingnamespacestd;classTest{public:Test(){}Test(int_m):_cm(_m){}intget...
1 class的经典分类: 1)不带指针:Complex(复数)。不带指针的类,多半不用写析构函数。 2)带指针:String 2 基于对象和面向对象的一个区别: 基于对象:单一对象的设计 面向对象:对象之间有继承、复合、委托的关系 3 C++分为两个部分:语言部分和标准库部分! 使用标准库也是非常非常重要的事情。如果不用标准库,不...
class A { … const int nValue; //成员常量不能被改动 … A(int x): nValue(x) { } ; //仅仅能在初始化列表中赋值 } (2)const修饰成员函数 const修饰类的成员函数,则该成员函数不能改动类中不论什么非const成员函数。一般写在函数的最后来修饰。 class A { … void function()const; //常成员...
const Class_Name Object_name; 当函数声明为const时,可以在任何类型的对象,const对象以及非const对象上调用它。 每当将对象声明为const时,都需要在声明时对其进行初始化。但是,只有在构造函数的帮助下,才可以在声明时进行对象初始化。 当在函数的声明中使用const关键字时,该函数将变为const。const函数的想法是不允许...
class Date {}; 如果一个类中什么成员都没有,简称为空类。空类中什么都没有吗?并不是的,任何一个类在我们不写的情况下,都会自动生成6个默认成员函数。 【默认成员函数概念】:用户没有显式实现,编译器会生成的成员函数称为默认成员函数 ⭐其中上次的博客已经详细的讲解了构造函数&&析构函数的使用方法与拷贝...
class MyClass {public:void PrintData() const {// 不能修改对象的成员变量}};```3. 修饰常指针 const还可以用于声明常指针,即指针本身是不可变的,但可以修改指向的对象的值。const int* ptr = &value;```4. 修饰常引用 使用const修饰引用可以确保通过引用不会修改原始变量的值。const int& ref = ...
class Person { public: Person() { m_A = 0; m_B = 0; } //this指针的本质是一个指针常量,指针的指向不可修改 //如果想让指针指向的值也不可以修改,需要声明常函数 void ShowPerson() const { //const Type* const pointer; //this = NULL; //不能修改指针的指向 Person* const this; //this...
class MyClass { public: void PrintData() const { // 不能修改对象的成员变量 } }; ``` 3. 修饰常指针 const还可以用于声明常指针,即指针本身是不可变的,但可以修改指向的对象的值。 const int* ptr = &value; ``` 4. 修饰常引用 使用const修饰引用可以确保通过引用不会修改原始变量的值。 const...
7const_cast<C*>(this)->i++;//C++风格的转换方式 8} 9}; 2.使用mutable关键字 如果一个数据成员被mutable关键字修饰,那么说明这个成员在const成员函数中可以被修改,如下所示: 1classC{ 2private: 3mutableinti;//使用mutable进行修饰 4public: ...