C++中各种数据成员及成员函数的定义及使用
2017-10-09 15:47
453 查看
1.类是自定义的数据类型.类与应用程序不同,类的功能虽然独立,但不能独立启动,就象汽车零件那样.
2.Class 是一种数据类型, 其变量为对象.对象包含有member variables(成员变量)和member
3.在类(class)中 , 成员函数及成员变量会分为两大类 : public members (公开成员)、private members (私有成员)
1.) public members :被定义为public members 的成员函数及成员变量 , 可在任何的函数中被使用 .包括main函数,及其它非成员函数.
2.) private members :被定义为private members 的成员函数及成员变量 , 只能在成员函数中被使用 .
4.成员函数在类外部定义时,在函数名称前应加上日期类名前缀Date和命名空间引导符“::”,它表示着自己属于某一个名空间(类),与普通函数相区别。
成员函数可以在类内,也可以在类外定义,若在类内定义,则默认为内联函数(inline)
5.对象是拥有操作的实体,是由类创建的
6.访问成员函数的方式
(1)对象方式 Date d; d.set(2011,12,5);
(2)对象指针方式
7.成员函数的操作,如果只对对象进行读操作,则该成员函数可以设计为常对象成员函数,好处是让使用者一目了然的知道该成员函数不会改变对象值,同时让类的实现者更方便地调试。
常成员函数的声明和定义在形式上必须一致,即在函数形参列表的右括号后面加上const。如
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.类的静态数据成员,保证每个类只有一个实体。每个对象不再有它的副本。如:
程序执行结果:Jenny->students are 3numbers
Smith->students are 3numbers
12.静态成员函数一般设计为公有的,以访问私有静态数据成员为目的.调用方式是以类名加域操作符::后跟静态成员函数.如:
13.静态成员函数的定义在类外边时,类名前应该免去static,只在声明时必要。
静态成员函数不能访问本类中非静态的数据成员。但可以访问传入对象的私有成员。
2.Class 是一种数据类型, 其变量为对象.对象包含有member variables(成员变量)和member
functions(成员函数). class Date{ int year, month, day; public: void set(int y,int m,int d); // 赋值操作 bool isLeapYear(); // 判断闰年 void print(); // 输出日期 };
3.在类(class)中 , 成员函数及成员变量会分为两大类 : public members (公开成员)、private members (私有成员)
1.) public members :被定义为public members 的成员函数及成员变量 , 可在任何的函数中被使用 .包括main函数,及其它非成员函数.
2.) private members :被定义为private members 的成员函数及成员变量 , 只能在成员函数中被使用 .
4.成员函数在类外部定义时,在函数名称前应加上日期类名前缀Date和命名空间引导符“::”,它表示着自己属于某一个名空间(类),与普通函数相区别。
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)对象指针方式
Date* dp = new Date; dp->set(2011,12,5); // … delete dp;
7.成员函数的操作,如果只对对象进行读操作,则该成员函数可以设计为常对象成员函数,好处是让使用者一目了然的知道该成员函数不会改变对象值,同时让类的实现者更方便地调试。
常成员函数的声明和定义在形式上必须一致,即在函数形参列表的右括号后面加上const。如
class Date{ pubilc: void set(int y,int m,int d); void print() const; …} inline void Date::print() const { cout<<setfill('0'); cout<<setw(4)<<year<<'-'<<setw(2)<<month<<'-'<<setw(2)<<day<<'\n'; cout<<setfill(' '); }
8.常成员函数 对捆绑的对象, 不允许写操作
函数的常量参数 对传递的参数, 不允许写操作
例如:
bool Date::comp(const Date& a) const { year = 2005; // error: 常成员函数捆绑的对象 a.year = 2003; // error: 常量对象 return year==a.year && month==a.month && day==a.day; }
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.类的静态数据成员,保证每个类只有一个实体。每个对象不再有它的副本。如:
#include<iostream> using namespace std; //------------------------------------- class Student{ static int number; string name; public: void set(string str) { name = str; ++number; } void print() { cout<<name<<" -> students are "<<number<<" numbers\n"; } }; int Student::number = 0; //静态数据成员在类外分配空间和初始化 //------------------------------------- void fn() { Student s1; s1.set("Jenny"); Student s2; s2.set("Randy"); s1.print(); } int main() { Student s; s.set("Smith"); fn(); s.print(); system("pause"); return 0; }
程序执行结果:Jenny->students are 3numbers
Smith->students are 3numbers
12.静态成员函数一般设计为公有的,以访问私有静态数据成员为目的.调用方式是以类名加域操作符::后跟静态成员函数.如:
class Student{ static int num; // 静态私有成员 string name; //... public: // ... static void showNum() { cout<<num<<“\n”; // 访问静态私有成员 } }; int Student::num = 0; // 静态数据成员初始化 int main() { Student s; s.showNum(); // 可行,但非标准 Student::showNum(); // 静态成员函数调用 }
13.静态成员函数的定义在类外边时,类名前应该免去static,只在声明时必要。
静态成员函数不能访问本类中非静态的数据成员。但可以访问传入对象的私有成员。
void showNum(Student &s) { cout<<name<<“\n”; // 错 访问私有成员 cout<<s.name<<“\n”; // 访问给定对象的私有成员 }
相关文章推荐
- C++中各种数据成员及成员函数的定义及使用
- C++中各种数据成员及成员函数的定义及使用
- C++中各种数据成员及成员函数的定义及使用
- C++中各种数据成员及成员函数的定义及使用
- C++中各种数据成员及成员函数的定义及使用
- C++中各种数据成员及成员函数的定义及使用
- C++中各种数据成员及成员函数的定义及使用
- C++中各种数据成员及成员函数的定义及使用
- 走进C++程序世界-------类的定义和使用(数据成员和方法成员,析构函数,构造函数,内联实现)
- C++定义的时钟类(主要是类的定义、数据成员、成员函数的定义,类对象的定义及对象之间的赋值的简单例子)
- Effective Modern C++ 条款22 当使用Pimpl Idiom时,在实现文件中定义特殊成员函数
- 在c++中,静态数据成员可以被非静态成员函数调用吗?如果可以调用的话那为什么还要定义静态成员函数呢
- C++使用static的错误:无法解析的外部符号、“static”不应在文件范围内定义的成员函数上使用 .
- 走进C++程序世界-------类的定义和使用(数据成员和方法成员,析构函数,构造函数,内联实现)
- 为什么在C++使用pthread_create()的时候,类成员函数做线程的处理函数必须要定义成static类型的?
- C++使用static的错误:无法解析的外部符号、“static”不应在文件范围内定义的成员函数上使用
- C++成员函数实现在类定义中与在类定义外的区别(Windows下直接使用g++)
- C++使用static的错误:无法解析的外部符号、“static”不应在文件范围内定义的成员函数上使用
- 为什么在C++使用pthread_create()的时候,类成员函数做线程的处理函数必须要定义成static类型的?
- C++中,如何定义和使用指向成员函数的指针