-
//header file:Teacher.h #ifndef TEACHER_H_INCLUDED #define TEACHER_H_INCLUDED #include<iostream> #include<string> using namespace std; class Teacher { public: Teacher(string name = "james",string gender = "男",int age = 18,int m = 160); //Teacher(); void set_name(string name); string get_name(); void set_gender(string gender); string get_gender(); void set_age(int age); int get_age(); int get_max(); private: string m_strName; string m_strGender; int m_iAge; const int m_iMax; }; #endif // TEACHER_H_INCLUDED //body Teacher.cpp //body #include<iostream> #include"Teacher.h" //#include<string> using namespace std; Teacher::Teacher(string name,string gender,int age,int m):m_strName(name),m_strGender(gender),m_iAge(age),m_iMax(m) { cout<<"Teacher(string name,string gender,int age)"<<endl; } /*Teacher(){ cout<<"Teacher()"<<endl; } */ void Teacher::set_name(string name) { m_strName = name; } string Teacher::get_name() { return m_strName; } void Teacher::set_gender(string gender) { m_strGender = gender; } string Teacher::get_gender() { return m_strGender; } void Teacher::set_age(int age) { m_iAge = age; } //main() demo.cpp #include<iostream> #include<stdlib.h> //#include<string> #include"Teacher.h" using namespace std; int main(void) { Teacher t1("jack","男",,100); cout<<t1.get_name()<<" "<<t1.get_gender()<<" "<<t1.get_age()<<" "<<t1.get_max()<<endl; system("pause"); return 0; }
查看全部 -
从栈中实例化对象的方式:TV tv; TV tv[20] (系统自动分配内存,使用完毕后系统释放内存 ) 从堆中实例化对象的方式:TV *q = new TV(); TV *p = new TV[20]; (p/q分别指向系统的一块内存【使用new申请一块内存】) delete q; delete [] ; 分别释放内存
查看全部 -
栈中实例化查看全部
-
一个类只有一个构造函数,不一定是默认的。
初始化时不需要传入参数的为默认构造函数。
查看全部 -
内存分区。
查看全部 -
定义一个Student类,包含名字一个数据成员,定义无参构造函数、有参构造函数、拷贝构造函数、析构函数及对于名字的封装函数,在main函数中实例化Student对象,并访问相关函数,观察运行结果。
查看全部 -
类{命名空间;成员函数;数据成员;} 数据成员{普通数据成员;string;const成员;静态数据成员;对象成员;} 成员函数{属性封装函数;一般功能函数;特殊函数{构造函数{拷贝构造函数;默认构造函数};析构函数}} 成员函数{参数默认值;函数重载;引用;const;} 对象实例化{堆中实例化;栈中实例化;}
查看全部 -
第一次栈实例化对象打印出来的;
第二次堆实例化对象打印出来的;
第三次释放内存delete p调用出析构函数打印出来的
查看全部 -
#include <iostream> #include <string> using namespace std; class Teacher { public: Teacher(string name = "Jim", int age = 1); Teacher(const Teacher &tea); ~Teacher(); void setName(string name); string getName(); void setAge(int age); int getAge(); private: string m_strName; int m_iAge; }; #include "Teacher.h" Teacher::Teacher(string name,int age):m_strName(name),m_iAge(age) { cout <<"Teacher(string name,int age)" <<endl; } Teacher::Teacher(const Teacher &tea) { cout <<"Teacher(const Teacher &tea)" <<endl; } Teacher::~Teacher() { cout <<"~Teacher()" <<endl; } void Teacher::setName(string name) { m_strName = name; } string Teacher::getName() { return m_strName; } void Teacher::setAge(int age) { m_iAge = age; } int Teacher::getAge() { return m_iAge; } #include <iostream> #include<stdlib.h> #include "Teacher.h" #include <string> using namespace std; void test(Teacher t) { } int main() { Teacher t1; Teacher t2(t1); system("pause"); return 0; }
查看全部 -
构造函数:出生--析构函数:死亡 对象的生命历程 申请内存—初始化列表-构造函数-参与运算-析构函数-释放内存 析构函数 ( 在对象销毁时,自动调用,归还系统资源 定义格式:~类名() ) 如果没有自定义,系统自动生成 析构函数在对象销毁时自动调用 析构函数没有返回值、没有参数也不能重载
析构函数
定义格式:~类名()
特性: 如果没有自定义的析构函数则系统自动生成
析构函数在对象销毁时自动调用析构函数无返回值、参数,不能重载
拷贝构造函数 只有一个const型参数,参数前加一个&引用符号
析构函数 不加任何参数,类名前加一个 ~ 符号
查看全部 -
#include <string> #include <iostream> using namespace std; class Teacher { public: Teacher(string name = "Jim",int age=1); Teacher(const Teacher &tea); void setName(string _name); string getName(); void setAge(int _age); int getAge(); private: string m_strName; int m_iAge; }; #include "Teacher.h" #include <iostream> using namespace std; Teacher::Teacher(string name,int age):m_strName(name),m_iAge(age) { cout <<"Teacher(string name,int age)" <<endl; } Teacher::Teacher(const Teacher &tea) { cout <<"Teacher(const Teacher &tea)" <<endl; } void Teacher::setName(string _name) { m_strName=_name; } string Teacher::getName() { return m_strName; } void Teacher::setAge(int _age) { m_iAge=_age; } int Teacher::getAge() { return m_iAge; } #include <string> #include <iostream> #include "Teacher.h" #include<stdlib.h> using namespace std; void test(Teacher t) { } int main() { Teacher t1; test(t1); system("pause"); return 0; }
查看全部 -
拷贝构造函数
定义格式:类名(const 类名&变量名)
class Student
{
public:
Student(){m_strName = "Jim";}
Student(const Student &stu){} //拷贝构造函数在名称上一样,但是在参数设计上却不同,const +引用
private:
string m_strName;
}
如果没有自定义的拷贝构造函数,则系统自动生成一个默认的拷贝构造函数
当采用直接初始化或复制初始化实例化对象时,系统自动调用拷贝构造函数
查看全部 -
#include <iostream> #include<string> using namespace std; class Teacher { public: Teacher(string name = "Jim",int age = 1,int m=100); void setName(string name); string getName(); void setAge(int age); int getAge(); int getMax(); private: string m_strName; int m_iAge; const int m_iMax; }; #include"Teacher.h" Teacher::Teacher(string name,int age,int m):m_strName(name),m_iAge(age),m_iMax(m) { cout <<"Teacher(string name,int age)" <<endl; } int Teacher::getMax() { return m_iMax; } void Teacher::setName(string name) { m_strName=name; } string Teacher::getName() { return m_strName; } void Teacher::setAge(int age) { m_iAge=age; } int Teacher::getAge() { return m_iAge; } #include <iostream> #include <string> #include <stdlib.h> #include "Teacher.h" using namespace std; int main(void) { Teacher t1("Merry",12,150); cout <<t1.getName() <<" " <<t1.getAge() <<" " <<t1.getMax() <<endl; system("pause"); return 0; }
查看全部 -
初始化列表的特性: 初始化列表先于构造函数执行 初始化列表只能用于构造函数 初始化列表可以同时初始化多个数据成员
初始化列表存在的必要性: 关于在构造函数中赋值是不能被允许的,只能通过初始化列表的存在来初始化构造函数的参数问题
查看全部
举报