-
类是概念,对象是实例。例如:要设计一部手机,那么需要图纸,图纸就是概念,而通过图纸造出的手机就是实例。
同一张图纸,不同的厂商可能造出的手机不同,手机有各种功能,但手机有共有的功能,发短信、打电话,这两个功能就是手机的属性(数据成员)。
定义一个类:
class 类名
{
public : //公共的,客户可以看到的
private : //私有的,客户看不到的
protected : //受保护的,客户看不见,但开发者能看到
}
查看全部 -
Sink查看全部
-
对象实例化分为从堆中实例化和从栈中实例化
从栈中实例化的对象会自动销毁,声明方式如下
C a 或 C b[20]
从堆中实例化的对象不会自己删除,声明和销毁分别依靠new和delete,声明时候可能会出现失败的情况这时候需要判断指针是否为NULL
如 if(p == NULL){}
用堆生成的对象是指针,切记
例如
C *a = new C();
delete a;
C *a = new C[3];
delete []a;
查看全部 -
申请内存-》初始化列表-》构造函数-》参与运算-》析构函数-》释放内存
查看全部 -
拷贝构造函数:类名(const 类名&变量名)
赋值和复制调用的都是类的拷贝构造函数
查看全部 -
初始化列表是默认构造函数的一种增强
存在的必要性:可以用来初始化const 成员变量
查看全部 -
类内定义函数优先被编译为内联函数。
头文件中的类外定义,类中成员函数相当于声明。
C++必须要求函数要有声明,所以实现的模块必须要包含头文件
查看全部 -
getline 与直接cin输入的区别: getline可以获得字符串类型的空值
查看全部 -
类成员在作为函数参数变量传参的时候,实质上是重新复制原变量,创造一个新变量进行函数计算的,在函数计算完成之后,这个变量随着函数结束一起销毁。
查看全部 -
拷贝构造函数的参数设置一定是常量化的类变量引用。
Student (Const Student &stu){}
查看全部 -
初始化列表可以初始化常量变量比如const int age。
Teacher::Teacher(string name , int age) : m_strName(name) , m_iAge(age)
{
}
查看全部 -
#include <iostream>
#include <string>
using namespace std;
/**
* 定义类:Student
* 数据成员:m_strName
* 无参构造函数:Student()
* 有参构造函数:Student(string _name)
* 拷贝构造函数:Student(const Student& stu)
* 析构函数:~Student()
* 数据成员函数:setName(string _name)、getName()
*/
class Student
{
public:
Student()
{
cout << "不带参数的构造函数" << endl;
}
Student(string _name)
{
m_strName = _name;
cout << "带参数的构造函数" << endl;
}
Student(const Student &stu)
{
cout << "copy的构造函数" << endl;
}
~Student(){};
void setName(string _name)
{
m_strName = _name;
}
string getName()
{
return m_strName;
}
private:
string m_strName;
};
int main(void)
{
// 通过new方式实例化对象*stu
Student *stu = new Student();
Student *stu1 = stu;
Student stu2;
Student st3(stu2);
// 更改对象的数据成员为“慕课网”
stu->setName("慕课网");
// 打印对象的数据成员
cout << stu->getName();
return 0;
}查看全部 -
#include <iostream>
#include <string>
using namespace std;
/**
* 定义类:Student
* 数据成员:名字、年龄
*/
class Student
{
public:
// 定义数据成员名字 m_strName 和年龄 m_iAge
string m_strName;
int m_iAge;
};
int main()
{
// 实例化一个Student对象stu
Student *stu = new Student() ;
// 设置对象的数据成员
stu->m_strName = "慕课网";
stu->m_iAge = 2;
// 通过cout打印stu对象的数据成员
cout << stu->m_strName << " " << stu->m_iAge << endl;
delete stu;
stu = NULL;
return 0;
}查看全部 -
栈区:内存由系统来控制,无论是分配还是回收都不需要程序员关心;
堆区:内存需要程序员管理,需要用delete来回收;
常量区:存储字符串和常量;
代码区:存储编译之后的二进制代码;
查看全部 -
#include <iostream>
#include <string>
using namespace std;
/**
* 定义类:Student
* 数据成员:m_strName
* 数据成员的封装函数:setName()、getName()
*/
class Student
{
public:
// 定义数据成员封装函数setName()
void setName(string _name)
{
m_strName=_name;
}
// 定义数据成员封装函数getName()
string getName()
{
return m_strName;
}
//定义Student类私有数据成员m_strName
private:
string m_strName;
};
int main()
{
// 使用new关键字,实例化对象
Student *str = new Student();
// 设置对象的数据成员
str->setName("慕课网");
// 使用cout打印对象str的数据成员
cout<<str->getName()<<endl;
// 将对象str的内存释放,并将其置空
str=NULL;
return 0;
}
查看全部
举报