• C++中各种数据成员及成员函数的定义及使用


    转载于:https://blog.csdn.net/u012677715/article/details/78183329     

    本文为CSDN博主「无力吐槽的典哥」的原创文章

    1.类是自定义的数据类型.类与应用程序不同,类的功能虽然独立,但不能独立启动,就象汽车零件那样.
    2.Class 是一种数据类型, 其变量为对象.对象包含有member variables(成员变量)和member

    1 functions(成员函数).
    2 class Date{
    3   int year, month, day;
    4 public:
    5   void set(int y,int m,int d);  // 赋值操作
    6   bool isLeapYear();              // 判断闰年
    7   void print();                    // 输出日期
    8 };

    3.在类(class)中 , 成员函数及成员变量会分为两大类 : public members (公开成员)、private members (私有成员)
    1.) public members :被定义为public members 的成员函数及成员变量 , 可在任何的函数中被使用 .包括main函数,及其它非成员函数.
    2.) private members :被定义为private members 的成员函数及成员变量 , 只能在成员函数中被使用 .
    4.成员函数在类外部定义时,在函数名称前应加上日期类名前缀Date和命名空间引导符“::”,它表示着自己属于某一个名空间(类),与普通函数相区别。

    1 void Date::set(int y,int m,int d)  {   year=y;  month=m;  day=d;  }

    成员函数可以在类内,也可以在类外定义,若在类内定义,则默认为内联函数(inline)
    5.对象是拥有操作的实体,是由类创建的
    6.访问成员函数的方式
    (1)对象方式 Date d; d.set(2011,12,5);
    (2)对象指针方式

    1  Date* dp = new Date;
    2   dp->set(2011,12,5);
    3   //
    4   delete dp;

    7.成员函数的操作,如果只对对象进行读操作,则该成员函数可以设计为常对象成员函数,好处是让使用者一目了然的知道该成员函数不会改变对象值,同时让类的实现者更方便地调试。
    常成员函数的声明和定义在形式上必须一致,即在函数形参列表的右括号后面加上const。如

     1 class Date{
     2  pubilc:
     3  void set(int y,int m,int d);
     4  void print() const;
     5 …}
     6  inline void Date::print() const
     7 {
     8 cout<<setfill('0');
     9   cout<<setw(4)<<year<<'-'<<setw(2)<<month<<'-'<<setw(2)<<day<<'
    ';
    10   cout<<setfill(' ');
    11 }

    8.常成员函数 对捆绑的对象, 不允许写操作
    函数的常量参数 对传递的参数, 不允许写操作
    例如:

    1 bool Date::comp(const Date& a) const
    2 {
    3     year = 2005; // error: 常成员函数捆绑的对象
    4     a.year = 2003;  // error: 常量对象
    5     return year==a.year &&
    6            month==a.month &&
    7            day==a.day;
    8   }

    9.一个整型变量的前增量操作的结果与变量值是一样的,而且前增量操作的结果是左值,操作可以连贯,而后增量操作的结果是增量之前的变量值,它是临时变量,当表达式计算工作完成后,该临时变量随即消失,所以变量最终值与后增量结果是错位的,
    如: int a=1,b=1,c =1,d=1;
    (++a)++; //a结果为3
    (b++)++;//结果b=2,(b++)的结果是临时变量,在其加1随后又抛弃
    ++(++c);//结果c=3
    ++(d++);//结果d=2,与b相似
    10.C++将struct纳入了类机制中,struct也可以包含成员函数,与class的区别在于关键字不同,默认的访问控制符不同,struct默认访问控制符为public。
    11.类的静态数据成员,保证每个类只有一个实体。每个对象不再有它的副本。如:

     1 #include<iostream>
     2 using namespace std;
     3 //-------------------------------------
     4 class Student{
     5   static int number;
     6   string name;
     7 public:
     8   void set(string str)
     9 {
    10     name = str;
    11     ++number;
    12   }
    13   void print()
    14 {
    15 cout<<name<<" -> students are "<<number<<" numbers
    ";
    16 }
    17 };
    18 int Student::number = 0;  //静态数据成员在类外分配空间和初始化
    19 //-------------------------------------
    20 void fn()
    21 {
    22   Student s1;
    23   s1.set("Jenny");
    24   Student s2;
    25   s2.set("Randy");
    26   s1.print();
    27 }
    28 int main()
    29 {
    30   Student s;
    31   s.set("Smith");
    32   fn();
    33   s.print();
    34 system("pause");
    35 return 0;
    36 }

    程序执行结果:Jenny->students are 3numbers
    Smith->students are 3numbers
    12.静态成员函数一般设计为公有的,以访问私有静态数据成员为目的.调用方式是以类名加域操作符::后跟静态成员函数.如:

     1 class Student{
     2   static int num;      // 静态私有成员
     3   string name;
     4   //...
     5 public:
     6   // ...
     7   static void showNum()
     8 {
     9   cout<<num<<“
    ”;   // 访问静态私有成员
    10 }
    11 };
    12 int Student::num = 0; // 静态数据成员初始化
    13 int main()
    14 {
    15   Student s;
    16   s.showNum();        // 可行,但非标准
    17   Student::showNum(); // 静态成员函数调用
    18 }

    13.静态成员函数的定义在类外边时,类名前应该免去static,只在声明时必要。
    静态成员函数不能访问本类中非静态的数据成员。但可以访问传入对象的私有成员。

    1 void showNum(Student &s)
    2 {
    3     cout<<name<<“
    ”;    // 错 访问私有成员
    4  cout<<s.name<<“
    ”;   // 访问给定对象的私有成员
    5  }
  • 相关阅读:
    golang roadrunner中文文档(五)集成到其他服务 docker
    golang roadrunner中文文档(四)app服务器
    golang roadrunner中文文档(三)HTTPS 和 HTTP/2
    golang roadrunner中文文档(二)PHP Workers
    golang roadrunner中文文档(一)基础介绍
    Laravel Octane中文文档
    PHP海量excel数据导出方案解决 xlswriter性能测试
    中国车牌归属地数据库
    php模仿go实现多变量返回
    laravel 异步队列任务 广播系统
  • 原文地址:https://www.cnblogs.com/SophieWang-cmu/p/12716350.html
Copyright © 2020-2023  润新知