- 1、本文档共27页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C与第三章
C++与C# 第三章 基于对象的程序设计(续) 下一节:const成员函数 下一节:mutable成员 下一节:static成员 下一节:static成员函数 下一节:静态成员的初始化 下一节:操作符重载 * * 北航软件所 孙自安 北航新主楼G920 电话Email: szabuaa@ class MyString { public: MyString( const char * str= 0 ); MyString( const MyString str); MyString(); char getCh( int i); //取得下标为i的字符,下标从0开始,若不存在,返回0 bool setCh(int i, char ch); //将下标为i的字符设置为ch, //若存在下标为i的元素,返回true,否则返回false。 void copy( const MyString str); //拷贝str的内容(替换已有字符串) void copy( const char * str); void strCat(const MyString str); //将str的内容追加到已有字符串之后 void strCat(const char * str); int getSize(); //取得字符串长度 void print(); //直接打印输出,不加回车换行符 private: int size; char * myStr; }; 作业(3月27日之前提交): 实现下述类的定义,要求: 1、类的定义放在MyString.h文件中,类的实现放在MyString.cpp中; 2、在main函数中测试该类,包括用类定义对象、所有成员函数的调用,放在test.cpp文件中。 Student * ps1 = new Student (“lisi”, 3, 17); …… delete ps1; //ps1-name并没有删除 3.6 析构函数 析构函数是构造函数的互补,为生命期即将结束的类对象自动释放资源。析构函数也是隐式自动调用的。 注意:析构函数的名字是在类名前加上波浪线~ ,它不返回任何值也没有任何参数。尽管我们可以为一个类定义多个构造函数,但是我们只能提供一个析构函数,它将被应用在类的所有对象上。 class Student{ public: Student(const char * str, int i, int a=18); Student (); Student (const Student other ); ~Student(); …… } Student::~Student() { delete []name; } void main() { Student st1(“lisi”, 1, 17 ); Student *st2 = new Student(“zhangsan”, 2, 19); …… delete st2; …… } st1 class Student{ public: …… int getAge() { return age; } int setAge(int a) { age = a; } … private: char * name; int id; int age; } const Student st1(“lisi”, 1, 18); int age = st1.getAge(); …… st1.setAge(20); ? 3.7 const成员函数 只有被声明为const 的成员函数才能被一个const 类对象调用,关键字const 被放在成员函数的参数表和函数体之间,对于在类体之外定义的const 成员函数,我们必须在它的定义和声明中同时指定关键字const class Student{ public: …… int getAge() const { return age; } int setAge(int a) { age = a; } int getId () const; … private: char * name; int id; int age; } int Student::getId() const { return id; } const Student st1(“lisi”, 1, 18); int age = st1.getAge(); int id = st1.getId(); …… int setAge(int a ) const { age=a;} 把一个修改类数据成员的函数声明为const 是非法的 为
文档评论(0)