-
六、拷贝构造函数
1、拷贝函数定义格式:
类名(const 类名&变量名)
Student(const Student&stu){ }
注:不定义拷贝默认函数,系统会自动生成
拷贝函数参数是确定的,不得重载
调用:
Student stu1; Student stu2=stu1; Student stu3(stu1);//后两个调用拷贝构造函数
查看全部 -
五、构造函数初始化列表
1、默认构造函数
在实例化对象时不需要传递参数的函数称为默认构造函数
2、构造函数初始化列表
语法:
构造函数:数据成员1(初始化值),数据成员二(初始化值)。。。{ }
特性:
a、初始化列表先于构造函数执行
b、初始化列表只能用于构造函数
c、初始化列表可以同时初始化多个数据成员
必要性:
数据成员若用const修饰为常量,则只有用初始化列表才能编译通过
查看全部 -
四、构造函数
1、内存分区
栈区: int x=0; int *p=NULL;//内存的申请释放由系统进行,不用用户借入
堆区:int *p=new int[20];//用户必须使用delete回收
全局区:存储全局变量及静态变量
常量区:string str="hello";//存储字符串及常量
代码区:存储逻辑代码的二进制
2、对象初始化
分类:
a、有且仅有一次
b、根据条件初始化
3、构造函数
特点:
a、再对象实例化时自动调用且仅被调用一次,可用来避免初始化忘记或重复初始化的错误
b、构造函数要与类同名
c、构造函数没有返回值
d、构造函数有多个重载形式
e、实例化对象时仅用到一个构造函数
f、当用户没有定义构造函数时,编译器自动生成一个构造函数
分类:
有参构造函数与无参构造函数
查看全部 -
三、类内及类外定义
1、类内定义与内联函数的关系:
类内定义的函数编译器会将其优先编译为内联函数
2、类外定义:
分类
同文件类外定义:虽然不在类内定义,但定义的函数和类在同一文件内
class Car{ void run(); }; void Car::run(){ }
分文件类外定义(常用)
编辑.h文件,名字最好与.cpp文件相同,.h文件中存放数据成员与成员函数,.cpp文件中对函数再描述
void 类名::函数名() { }
注意.cpp文件中要引用#include"类名.h"
查看全部 -
二、string类型
注意应加头文件#include<string>
1、初始化string对象
string s1;//s1为空字符串 string s2("ABC");//用字符串字面值初始化s2 string s3(s2);//将s3初始化为s2的一个副本 string s4(n,'c')//将s4初始化为字符‘c’的n个副本
2、string常用操作
string s; s.empty();//若s为空,返回true,否则返回false s.size();//返回s中字符个数;通过.运用string类型中的函数 s[n]//返回s中位置为n的字符,位置从0开始
3、getline函数
getline(输入流,字符串,中止符)
将用户输入的内容存入字符串中,遇到终止符停止读入。不设置终止符时终止符默认为‘/n’换行符
查看全部 -
一、class类和对象
1、定义
对象:一个实体
类:从对象中抽象出来描述某个对象的,类中包含数据成员(又称属性)和成员函数(又称方法)
2、对象实例化
类相当于一个模板,对象实例化即是根据一个类的设计,制造出多个对象的过程
分为栈中实例化与堆中实例化
从堆中实例化要用new开新空间,最后一定要释放;而在栈中则不需要,系统会自动处理
Student *str=new Studnt;//在堆中实例化 delete str; str=NULL;//释放
3、对象成员访问方法
栈:用 . 例如TV tv; tv.type=0;
堆:用-> 例如TV *p=new TV(); p->type=0;
查看全部 -
//类的声明.h文件
1.在类中定义所需的关键字(private);然后对类中定义的全部成员进行声明(set.get方法)
void setName(string name);
string getName();
2.在private,puclic操作之后开始内外定义(实例化set.get方法)
#include "Teacher.h"
#include <iostream>
#include <string>
using namespace std;
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(){//Teacher拥有的操作
cout<<"现在开始上课"<<endl;
}
3.在主函数中实例化对象
创造对象
实现对象
int main(){
Teacher t;
t.setName("栗子");
t.setGender("女");
t.setAge(24);
cout<<t.getName()<<" "<<t.getGender()<<" "<<t.getAge()<<" ";
t.teach();
system("pause");
return 0;
}
查看全部 -
string的常用操作
具体使用: string s1 = “hello”;
string s2("world");
string s3 = s1 + s2;
string s4 = "hello" + s2;
注意: string s6 = "hello" + "world"; 是非法的,只有字符串跟字符串之间不能连接,只能跟变量连接。
查看全部 -
ddadasdas
查看全部 -
public 公共的
protected 受保护的
private 私有的
查看全部 -
~类名() { delete []指针名 }查看全部
-
char *m_pName m_pName存的地址 *m_pName这个地址下面的内容被规定为char类型。查看全部
-
比如圆周率pie是常量,private里面定义时用cpnst修饰,所以使用一般的实例化方法会报错。所以这时候需要使用列表方法来做,就不会报错。查看全部
-
有参构造函数重载 类似于MATLAB里面的函数根据多个变量输入的形式。目的在于此。查看全部
-
对象的生命历程:
查看全部
举报