-
//同文件类外定义代码演示 #include <iostream> #include <stdlib.h> #include <string.h> using namespace std; class Teacher { public: //只声明其成员函数7个set get,函数实现在类外进行实现 void setName(string _name); string getName(); void setGender(string _gender); string getGender(); void setAge(int _age); int getAge(); void teach(); private: string m_strName; string m_strGender; int m_iAge; }; //开始类外定义 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; } void Teacher::setGender(string _gender){ m_strGender = _gender; } string Teacher::getGender(){ return m_strGender; } void Teacher::teach(){ cout << "现在开始上课" << endl; } int main(){ Teacher t; t.setName("孔子"); t.setAge(30); t.setGender("男"); cout << t.getName() << " "<< t.getGender() << " " << t.getAge() <<endl; t.teach(); return 0; }
查看全部 -
类内定义:成员函数体定义在类内
编译器优先将类内定义的成员函数定义为内联函数
类外定义:
1.同文件类外定义:成员函数虽然定义在类的外边,但其与类定义在同一个文件中
成员函数在类外面,就要表示其不是普通的函数。
2.分文件类外定义:
有很多优点。
先定义一个头文件:Car.h//建议类名与文件名定义为一样的
查看全部 -
对象的生命历程查看全部
-
析构函数的特点:
与构造函数的相同点:无自定义时自动生成,无返回值
查看全部 -
析构函数的定义:~类名( )
不允许定义任何参数
唯一作用:释放资源,释放被占用的内存(delete)
查看全部 -
拷贝构造函数不能重载:
函数重载要求形参有不同的地方,比如个数,比如类型
拷贝构造函数的形参是确定的,只能有一个形参且形参类型是:const 类名& 形参名, 不满足重载的条件,所以不能重载
拷贝构造函数没有返回值
查看全部 -
在类外设置函数也可以调用拷贝构造函数:将 t1 传递给参数 t 时
查看全部 -
拷贝构造函数与普通构造函数的区别主要在于:参数的定义不同
没有定义时系统会自动生成构造函数
查看全部 -
构造函数总结2查看全部
-
构造函数总结1
当形参全都有默认值时,构造函数就是默认构造函数
查看全部 -
拷贝构造函数
查看全部 -
初始化列表的必要性:
当初始化的数据成员为const类型时,定义成员函数时就无法对数据成员进行赋值(编译时报错),此时就要用到初始化列表
查看全部 -
初始化列表:一个冒号,赋值不用等号而要用圆括号,对多个数据成员赋值时其之间要用逗号隔开。查看全部
-
默认构造函数:实例化对象时不用传递参数的构造函数(与类名相同)
初始化列表先于构造函数执行,只能用于构造函数 ,可以同时初始化多个数据成员
查看全部 -
构造函数的规则和特点
查看全部
举报