-
#include <iostream>
#include <stdlib.h>
#include <string>
#include "Teacher.h"
using namespace std;
/* Teacher 类
定义无参构造函数
定义有参构造函数
数据:名
年龄
成员函数
数据成员的封装函数
*/
int main(void)
{
Teacher t1;
Teacher t2("merry",15);
Teacher t3("James");
cout << t1.getName() << " " << t1.getAge() << endl;
cout << t2.getName() << " " << t2.getAge() << endl;
cout << t3.getName() << " " << t3.getAge() << endl;
system("pause");
return 0;
}
#include "Teacher.h"
#include <iostream>
Teacher::Teacher()
{
m_strName = "Jim";
m_iAge = 5;
cout << "Teacher()" << endl;
}
Teacher::Teacher(string _name , int _age)
{
m_strName = _name;
m_iAge = _age;
cout << " Teacher(string _name , int _age)" << 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 <string>
using namespace std;
/*
定义一个Student类,含有如下信息;
1.姓名:name
2.性别:gender
3.学分(只读):score
4.学习:study
*/
class Teacher
{
public:
Teacher();
Teacher(string _name, int _age = 20);
void setName(string _name);
string getName();
void setAge(int _age);
int getAge();
private:
string m_strName;
int m_iAge;
};
查看全部 -
构造函数的规则和特点: 1、构造函数在对象实例化时被自动调用(有且仅有一次); 2、构造函数与类同名; 3、构造函数没有返回值(连 void 都不用写); 4、构造函数可以有多个重载形式(遵循重载规则,参数个数、类型、调用顺序不同等); 5、即使有多个构造函数,实例化对象时仅用到一个构造函数; 6、用户没有定义构造函数时,编译器自动生成一个构造函数。 内存分区 栈区:定义变量。内存由系统进行控制,释放和分配 堆区:关键字new,需要程序员自己管理释放 全局区:全局变量和静态变量 常量区:字符串和常量
查看全部 -
#include <iostream> #include <string> using namespace std; class Teacher { public: 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::setGender(string _gender) { m_strGender=_gender; } string Teacher::getGender() { return m_strGender; } void Teacher::setAge(int _age) { m_iAge=_age; } int Teacher::getAge() { return m_iAge; } void Teacher::teach() { cout << "现在上课。。。。" << endl; } int main() { Teacher t; t.setName("李白"); t.setGender("男"); t.setAge(19); cout << t.getName() << ' ' << t.getGender() << ' ' << t.getAge() << endl; t.teach(); return 0; }
查看全部 -
类内定义的成员函数,编译器会将其优先编译为内联函数。对于复杂的成员函数,则编译为普通的函数。 类外定义的成员函数的格式: 返回类型 类名::函数名(参数列表) 分文件类外定义: 定义一个类名.h的头文件,用来保存类的定义; 定义一个类名.cpp的文件,用来保存类中成员函数的定义,定义之前要加上#include "类名.h"
查看全部 -
定义一个Student类,包含名字一个数据成员,使用get和set函数封装名字这个数据成员。在main函数中通过new实例化对象,并打印其相关函数。
查看全部 -
类的写法一般是public写在前面,private写在后面 2.建议定义私有成员时命名为 m_数据类型+成员名 如:string m_strName 以便区分数据成员,知道数据成员是定义在类里面的 形参是_+成员名,如:void getName(string _name) 3.只读:初始化,只有get函数,不设置set函数。
查看全部 -
面向对象的基本思想:以谁做什么来表达程序的逻辑,以对象为中心,对象的所有行为都通过调用自己的函数来完成。体现在代码层面就是数据成员调用自己的函数以及通过函数来对自己进行操作. 封装的好处:1.可以在成员函数中做一些必要的限制 2.有时候确实不允许用户改变数据成员 对数据的封装一般用set来对函数赋值 get函数用来读取数据成员
查看全部 -
定义一个Student类,包含名字和年龄两个数据成员,实例化一个Student对象,并打印出其成两个数据成员
查看全部 -
getline()的原型是istream& getline ( istream &is , string &str , char delim ); 其中 istream &is 表示一个输入流,譬如cin;string&str表示把从输入流读入的字符串存放在这个字符串中(可以自己随便命名,str什么的都可以);char delim表示遇到这个字符停止读入,在不设置的情况下系统默认该字符为'\n',也就是回车换行符(遇到回车停止读入)。给大家举个例子: string line; cout<<"please cin a line:" getline(cin,line,'#'); cout<<endl<<"The line you give is:"line; 那么当我输入"You are the #best!" 的时候,输入流实际上只读入了"You are the ",#后面的并没有存放到line中(应该是在缓冲区里吧)。然后程序运行结果应该是这样的: please cin a line:You are the #best! The line you give is:You are the 而且这里把终止符设为#,你输入的时候就算输入几个回车换行也没关系,输入流照样会读入,譬如: please cin a line:You are the best! //这里输入了一个回车换行 Thank you! # //终止读入 The line you give is:You are the best! //换行照样读入并且输出 Thank you! 以上就是getline()函数一个小小的实例了。
查看全部 -
从栈中实例化 Coordinate coor; coor.x=10; coor.y=20; 栈中实例化之后内存自动清除。 从堆中实例化 Coordinate *p=new Coordinate(); p->x=100; p->y=200; 堆中实例化不一定成功,所以需要判断一下:if(p==NULL){ return 0;} 堆中实例化之后需要清除内存,即:delete p;p=NULL;
查看全部 -
栈:是由编译器在需要时自动分配,不需要时自动清除的变量存储区。通常存放局部变量、函数参数等。
堆:是由new分配的内存块,由程序员释放(编译器不管),一般一个new与一个delete对应,一个new[]与一个delete[]对应。如果程序员没有释放掉, 资源将由操作系统在程序结束后自动回收。查看全部 -
哲理景致令人神往,这里的知识饱含热情。下面我就作为向导带着大家一起来看一看封装篇中的主要内容。 那么首先登场的呢就是“类”和“对象”,它们呢是我们封装篇大戏中的领衔主演,不过咱们的“类”呢是抽象派,玩的呢就是概念,“对象”呢则真实而具体。那么有了主角之后呢,我们还是需要一些配角帮衬着剧情才够热闹,所以呢我们下面隆重为大家介绍各位配角。 首先呢是“数据成员和成员函数”,它们构成了精彩而完整的“类”。 其次呢我会为大家介绍的是“构造函数和析构函数”,它们呢描述了“对象”的生生死死。 “对象的复制与赋值”使“类”的定义充满艺术。 “对象的数组与对象指针”呢将应用形态发挥得淋漓尽致。 最后呢我会为大家介绍影子一样的“this指针”它贯穿于我们这部大戏的始终却很少崭露头角,它的加入使“类”与“对象”得以有机结合,更是为封装篇画龙点睛。 那么大家学完了这些之后相信大家的思维模式呢就逐步地从面向过程转向面向对象,从而可以处理更加复杂的程序,编程的水平呢也能与日俱增,届时大家就可以自娱自乐搞点儿小游戏……
查看全部 -
违背了面向对象的基本思想
查看全部 -
C++初始化string的方法
查看全部 -
使用new关键字申请内存有可能会失败。
使用完成后需要手动delete这个对象。
查看全部
举报